jsp实现邮件的发送

简介:

如果程序出现 454 Authentication failed, please open smtp flag first! 错误,那么一般是邮箱没有开通POP3/SMTP服务,登录邮箱,在设置中开启该服务即可 !

另外需要的jar包如下: imap.jar, mail.jar, smtp.jar,  可以自己在网上下载。


package com.hzml.serve;

import java.io.IOException;
import java.util.Date;
import java.util.Properties;

import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/MailResponse.servlet")
public class MailResponse extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    public MailResponse() {
        super();
    }
    
    private void process(HttpServletRequest request, HttpServletResponse response) {
        try{
            String pwd = "hjzgg5211314";//发件人邮箱密码
             String mailfrom = request.getParameter("emailFrom"); //网易的邮箱
             String wangyiFrom = mailfrom.substring(0, mailfrom.indexOf('@'));//网易邮箱的用户名
            String tu = "163.com"; //你邮箱的后缀域名
            String tto= request.getParameter("emailTo"); //接收邮件的邮箱
            String ttitle= "在线软件工程管理员回复!";
            String tcontent = request.getParameter("messageTo");
    
            Properties props=new Properties();
    
            props.put("mail.smtp.host","smtp."+tu);//邮箱SMTP服务器地址端口
    
            props.put("mail.smtp.auth","true");//这样才能通过验证
    
            Session s=Session.getInstance(props);
    
            s.setDebug(true);
    
            MimeMessage message=new MimeMessage(s);
    
            //给消息对象设置发件人/收件人/主题/发信时间
    
            InternetAddress from=new InternetAddress(mailfrom); //发件人的qq邮箱
    
            message.setFrom(from);
    
            InternetAddress to=new InternetAddress(tto);//收件人的邮箱
    
            message.setRecipient(Message.RecipientType.TO,to);
    
            message.setSubject(ttitle);
    
            message.setSentDate(new Date());
    
            //给消息对象设置内容
    
            BodyPart mdp=new MimeBodyPart();//新建一个存放信件内容的BodyPart对象
    
            mdp.setContent(tcontent,"text/html;charset=gb2312");//给BodyPart对象设置内容和格式/编码方式
    
            Multipart mm=new MimeMultipart();//新建一个MimeMultipart对象用来存放BodyPart对
    
            //象(事实上可以存放多个)
    
            mm.addBodyPart(mdp);//将BodyPart加入到MimeMultipart对象中(可以加入多个BodyPart)
    
            message.setContent(mm);//把mm作为消息对象的内容
    
            message.saveChanges();
    
            Transport transport=s.getTransport("smtp");
    
            transport.connect("smtp."+tu, wangyiFrom, pwd); //这里的wangyiFrom为发件人网易账号
    
            transport.sendMessage(message,message.getAllRecipients());
    
            transport.close();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        process(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        process(request, response);
    }

}


目录
相关文章
|
5月前
|
Java 数据安全/隐私保护
JSP 教程 之 JSP 发送邮件 5
JSP教程讲解如何使用JSP发送邮件,涉及邮件服务器的用户认证,通过设置"mail.user"和"mail.password"属性来完成。此外,演示了如何利用HTML表单收集信息,如收件人(to),发件人(from),主题(subject)及邮件正文(messageText),并用request对象获取这些参数。
41 11
|
5月前
|
Java
JSP 教程 之 JSP 发送邮件 4
使用JSP发送带附件的邮件示例,导入必需的库,设置发件人、收件人及邮件服务器,创建`MimeMessage`,添加正文和附件到`Multipart`对象,然后通过`Transport.send()`发送邮件。成功或失败的结果会显示在HTML页面上。
26 7
|
5月前
|
Java API
JSP 教程 之 JSP 发送邮件 1
在JSP中发送邮件涉及JavaMail API和JAF。下载JavaMail和JAF的jar文件,添加到CLASSPATH。下面的JSP示例演示了如何发送邮件:设置收发地址,配置SMTP主机,创建MimeMessage,填充头部和正文,然后使用Transport.send()发送。成功后,页面显示“Sent message successfully....”。访问本地服务器上的SendEmail.jsp可触发邮件发送。
30 2
|
5月前
|
Java
JSP 教程 之 JSP 发送邮件 3
**JSP教程:发送HTML邮件** 此JSP示例演示如何通过localhost发送包含HTML内容的邮件。确保已将mail和activation库添加到CLASSPATH。代码创建MimeMessage,设置发件人、收件人、主题,并用`setContent()`添加HTML正文,然后发送。结果会在页面上显示。
19 1
|
5月前
|
存储 缓存 安全
JSP 教程 之 JSP 服务器响应 2
JSP的Response对象负责将处理结果返回给客户端,包括设置HTTP状态、发送数据如Cookie和HTTP头信息。常见的HTTP响应头如Allow指定支持的请求方法,Cache-Control控制缓存策略,Content-Type定义文档类型,Expires指示过期时间,Set-Cookie用于设置cookie。这些头信息在web编程中扮演重要角色。
39 4
|
5月前
|
缓存 Java 开发者
JSP 教程 之 JSP 服务器响应 3
JSP教程讲解了HttpServletResponse类如何处理服务器响应。response对象用于创建HTTP信息头,支持添加cookie、设置HTTP状态码等。方法包括编码URL、检查响应头、添加响应头、发送错误或重定向、设置缓冲区大小及编码集等。通过这些方法,开发者能精细控制客户端的响应内容和行为。
59 4
|
5月前
|
Java 容器
JSP 教程 之 JSP 服务器响应 1
JSP教程聚焦服务器响应:Response对象负责将处理结果回传客户端,设置HTTP状态及发送数据,如Cookie和头部信息。示例响应包括HTTP状态行(如HTTP/1.1 200 OK)、Content-Type(如text/html)及其他头部,接着是HTML文档结构。
38 3
|
5月前
|
Java 开发者
JSP 教程 之 JSP 服务器响应 4
JSP教程讲解了如何使用HttpServletResponse对象响应客户端。示例代码展示了一个每5秒自动刷新并显示当前时间的页面。通过response对象设置HTTP响应头,包括刷新间隔(setIntHeader("Refresh", 5))和时间信息。当访问保存为main.jsp的这个页面时,浏览器会持续更新显示系统时间。
49 2
|
6月前
|
Java
JSP 教程 之 JSP 客户端请求 3
JSP教程展示了如何读取客户端HTTP请求头。通过HttpServletRequest的getHeaderNames()方法获取头信息,遍历Enumeration对象,显示每个Header的名称和值。提供的示例代码是一个HTML表格,展示HTTP头名和对应的值,用于演示从JSP页面获取客户端请求详情。
27 1
|
6月前
|
Java
JSP 教程 之 JSP 客户端请求 1
JSP教程介绍了客户端请求的HTTP信息头,如Accept(MIME类型)、Accept-Charset(字符集)、Accept-Encoding(编码类型)、Accept-Language(首选语言)、Authorization(用户认证)、Connection(持久连接)、Content-Length(POST数据长度)、Cookie(浏览器发送cookies)、Host(URL的主机名和端口)、If-Modified-Since(更新检查)、If-Unmodified-Since、Referer(引用页面URL)和User-Agent(浏览器标识)。这些头信息在Web编程中扮演重要角色。
24 0