基于JavaServlet实现发送邮件

渡星河
2023-02-11 / 0 评论 / 13 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2023年02月11日,已超过586天没有更新,若内容或图片失效,请留言反馈。

邮件发送需要下载下面的两个jar包导入到项目

activation-1.1.1.jar
mail-1.4.7.jar

jar包下载网站

jar下载网站

代码实现

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Properties;

@WebServlet(name = "SendEmailServlet", urlPatterns = {"/sendEmail"})
public class SendEmailServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();

        // 获取表单传递过来的数据
        String from = request.getParameter("from");
        String password = request.getParameter("password");
        String to = request.getParameter("to");
        String subject = request.getParameter("subject");
        String content = request.getParameter("content");

        // 配置发送邮件的环境信息
        final Properties props = new Properties();
        // 表示SMTP发送邮件,必须进行身份验证
        props.put("mail.smtp.auth", "true");
        // 此处填写SMTP服务器,QQ的是smtp.qq.com
        props.put("mail.smtp.host", "smtp.163.com");
        // 端口号,QQ邮箱给出了两个端口,我这里使用的网易邮箱所以是25,QQ好像是465
        props.put("mail.smtp.port", "25");
        // 此处填写你的账号
        props.put("mail.user", from);
        // 此处的密码就是前面说的16位STMP口令
        props.put("mail.password", password);

        // 构建授权信息,用于进行SMTP进行身份验证
        Authenticator authenticator = new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                // 用户名、密码
                String userName = props.getProperty("mail.user");
                String password = props.getProperty("mail.password");
                return new PasswordAuthentication(userName, password);
            }
        };
        // 使用环境属性和授权信息,创建邮件会话
        Session mailSession = Session.getInstance(props, authenticator);
        // 创建邮件消息
        MimeMessage message = new MimeMessage(mailSession);
        // 设置发件人
        InternetAddress form;
        try {
            form = new InternetAddress(from);
            message.setFrom(form);
            // 设置收件人
            InternetAddress toAddress = new InternetAddress(to);
            message.setRecipient(Message.RecipientType.TO, toAddress);

            // 设置邮件标题
            message.setSubject(subject);

            // 设置邮件的内容体
            message.setContent(content, "text/html;charset=UTF-8");
            // 发送邮件
            Transport.send(message);
            out.println("邮件发送成功");
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
}
1

评论 (0)

取消