spring 使用java发送企业邮件

依赖

<dependency>
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
            <version>1.5.4</version>
 </dependency>

代码

import javax.mail.*;
import javax.mail.Message.RecipientType;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.Properties;


/**
 * @description:
 * @author: Seldom
 * @time: 2020/7/12 16:23
 */
public class MailUtil {
    // 发件人的 邮箱 和 密码(替换为自己的邮箱和密码)
    // PS: 某些邮箱服务器为了增加邮箱本身密码的安全性,给 SMTP 客户端设置了独立密码(有的邮箱称为“授权码”),
    // 对于开启了独立密码的邮箱, 这里的邮箱密码必需使用这个独立密码(授权码)。
    public static String account = "seldom@cm.io";
    public static String password = "123456";


    // 发件人邮箱的 SMTP 服务器地址, 必须准确, 不同邮件服务器地址不同, 一般(只是一般, 绝非绝对)格式为: smtp.xxx.com
    // 网易163邮箱的 SMTP 服务器地址为: smtp.163.com
    // 这里是企业邮箱 smtp.ym.163.com
    public static String myEmailSMTPHost = "smtp.ym.163.com";


    /**
     * 发送邮件的方法
     *
     * @param to   邮件的接收方
     * @param code 邮件的激活码
     */
    public static void sendMail(String to, String code) {
        // 1.创建连接对象,链接到邮箱服务器
        Properties props = new Properties();                              // 参数配置
        props.setProperty("mail.transport.protocol", "smtp");     // 使用的协议(JavaMail规范要求)
        props.setProperty("mail.smtp.host", myEmailSMTPHost);     // 发件人的邮箱的 SMTP 服务器地址
        props.setProperty("mail.smtp.auth", "true");                  // 需要请求认证


        // 2.根据配置创建会话对象, 用于和邮件服务器交互
        Session session = Session.getInstance(props, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(account, password);
            }
        });


        try {
            // 3.创建邮件对象
            Message message = new MimeMessage(session);
            // 3.1设置发件人
            message.setFrom(new InternetAddress(account));
            // 3.2设置收件人
            message.setRecipient(RecipientType.TO, new InternetAddress(to));
            // 3.3设置邮件的主题
            message.setSubject("来自*****的激活邮件");
            // 3.4设置邮件的正文
            //message.setContent("<h1>来自智慧电梯的激活邮件,您的验证码是:</h1><h3><a href='http://localhost:10080/Demo_JavaMail/active?code=" + code + "'>http://localhost:10080/Demo_JavaMail/active?code=" + code + "</h3>", "text/html;charset=UTF-8");
            message.setContent("<h1>来自****的激活邮件,您的验证码是:" + code, "text/html;charset=UTF-8");
            // 4.发送邮件
            Transport.send(message);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }


    /**
     * 发送找回密码邮件的方法
     *
     * @param to   邮件的接收方
     * @param code 邮件的验证码
     */
    public static void findPasswordMail(String to, String code) {
        // 1.创建连接对象,链接到邮箱服务器
        Properties props = new Properties();                              // 参数配置
        props.setProperty("mail.transport.protocol", "smtp");     // 使用的协议(JavaMail规范要求)
        props.setProperty("mail.smtp.host", myEmailSMTPHost);     // 发件人的邮箱的 SMTP 服务器地址
        props.setProperty("mail.smtp.auth", "true");                  // 需要请求认证


        // 2.根据配置创建会话对象, 用于和邮件服务器交互
        Session session = Session.getInstance(props, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(account, password);
            }
        });


        try {
            // 3.创建邮件对象
            Message message = new MimeMessage(session);
            // 3.1设置发件人
            message.setFrom(new InternetAddress(account));
            // 3.2设置收件人
            message.setRecipient(RecipientType.TO, new InternetAddress(to));
            // 3.3设置邮件的主题
            message.setSubject("来自平台的验证邮件");
            // 3.4设置邮件的正文
            message.setContent("<h1>来自平台的验证邮件,请点击以下链接进行重置密码:</h1><h3><a href='http://localhost:10080/Demo_JavaMail/check?code=" + code + "'>http://localhost:10080/Demo_JavaMail/check?code=" + code + "</h3>", "text/html;charset=UTF-8");
            // 4.发送邮件
            Transport.send(message);
        } catch (MessagingException e) {
            e.printStackTrace();
        }


    }


    /**
     * 创建一封只包含文本的简单邮件
     *
     * @param session     和服务器交互的会话
     * @param sendMail    发件人邮箱
     * @param receiveMail 收件人邮箱
     * @return
     * @throws Exception
     */
    public static MimeMessage createMimeMessage(Session session, String sendMail, String receiveMail) throws Exception {
        // 1. 创建一封邮件
        MimeMessage message = new MimeMessage(session);
        // 2. From: 发件人
        message.setFrom(new InternetAddress(sendMail, "某某网", "UTF-8"));
        // 3. To: 收件人(可以增加多个收件人、抄送、密送)
        message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMail, "XX用户", "UTF-8"));
        // 4. Subject: 邮件主题
        message.setSubject("邮件主题", "UTF-8");
        // 5. Content: 邮件正文(可以使用html标签)
        message.setContent("邮件正文", "text/html;charset=UTF-8");
        // 6. 设置发件时间
        message.setSentDate(new Date());
        // 7. 保存设置
        message.saveChanges();
        return message;
    }

    public static void main(String[] args) {
        MailUtil mailUtil = new MailUtil();
        mailUtil.sendMail("zhangqipaq@163.com", "4312");//接收方  接受码
    }
}


验证码模板

private static String content = "<!DOCTYPE html>\n" +
            "<html>\n" +
            "<head>\n" +
            "<title></title>\n" +
            "<style>\n" +
            ".qmbox {\n" +
            "\tpadding: 0;\n" +
            "}\n" +
            ".qm_con_body_content {\n" +
            "\theight: auto;\n" +
            "\tmin-height: 100px;\n" +
            "\t_height: 100px;\n" +
            "\tword-wrap: break-word;\n" +
            "\tfont-size: 14px;\n" +
            "\tfont-family: \"lucida Grande\", Verdana, \"Microsoft YaHei\";\n" +
            "}\n" +
            ".body {\n" +
            "\tline-height: 170%%;\n" +
            "}\n" +
            "BODY {\n" +
            "\tfont-family: \"lucida Grande\", Verdana, \"Microsoft YaHei\";\n" +
            "\tfont-size: 12px;\n" +
            "\t-webkit-font-smoothing: subpixel-antialiased;\n" +
            "}\n" +
            "BODY {\n" +
            "\tmargin: 0;\n" +
            "\tpadding: 0;\n" +
            "}\n" +
            "BODY {\n" +
            "\tbackground-color: #fff;\n" +
            "\tfont-size: 12px;\n" +
            "}\n" +
            "BODY {\n" +
            "\tbackground: #fff;\n" +
            "}\n" +
            "BODY {\n" +
            "\tbackground: #fff;\n" +
            "\tcolor: #000;\n" +
            "\tfont-weight: normal;\n" +
            "\tfont-family: \"lucida Grande\", Verdana, \"Microsoft YaHei\";\n" +
            "\tpadding: 0 7px 6px 4px;\n" +
            "\tmargin: 0;\n" +
            "}\n" +
            "HTML {\n" +
            "\ttop: 0px;\n" +
            "}\n" +
            ".body P {\n" +
            "\tline-height: 170%%;\n" +
            "}\n" +
            "</style>\n" +
            "</head>\n" +
            "\n" +
            "<BODY mu=\"mu\" md=\"md\" module=\"qmReadMail\" context=\"ZC1912-rQ7uXSy7P7HThxdLFCOuY92\"><DIV class=mailcontainer id=qqmail_mailcontainer>\n" +
            "<DIV id=mainmail style=\"MARGIN-BOTTOM: 12px; POSITION: relative; Z-INDEX: 1\">\n" +
            "<DIV class=body id=contentDiv style=\"FONT-SIZE: 14px; HEIGHT: auto; POSITION: relative; ZOOM: 1; PADDING-BOTTOM: 10px; PADDING-TOP: 15px; PADDING-LEFT: 15px; Z-INDEX: 1; LINE-HEIGHT: 1.7; PADDING-RIGHT: 15px\" οnmοuseοver=getTop().stopPropagation(event); οnclick=\"getTop().preSwapLink(event, 'html', 'ZC1912-rQ7uXSy7P7HThxdLFCOuY92');\">\n" +
            "<DIV id=qm_con_body>\n" +
            "<DIV class=\"qmbox qm_con_body_content qqmail_webmail_only\" id=mailContentContainer>\n" +
            "<DIV class=main style=\"OVERFLOW: hidden; WIDTH: 100%%; BACKGROUND-COLOR: #f7f7f7\">\n" +
            "<DIV class=content style=\"BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; BACKGROUND: #ffffff; BORDER-BOTTOM: #cccccc 1px solid; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; PADDING-LEFT: 25px; BORDER-LEFT: #cccccc 1px solid; MARGIN: 50px; PADDING-RIGHT: 25px\">\n" +
            "<DIV class=header style=\"MARGIN-BOTTOM: 30px\">\n" +
            "<P>亲爱的用户:</P></DIV>\n" +
            "<P>您好!您正在进行邮箱验证,本次请求的验证码为:</P>\n" +
            "<P><SPAN style=\"FONT-SIZE: 18px; FONT-WEIGHT: bold; COLOR: #f90\">%s</SPAN><SPAN style=\"COLOR: #000000\">(为了保障您帐号的安全性,请在60秒内完成验证)</SPAN></P>\n" +
            "<DIV class=footer style=\"MARGIN-TOP: 30px\">\n" +
            "<P>%s</P>\n" +
            "<P><SPAN style=\"BORDER-BOTTOM: #ccc 1px dashed; POSITION: relative; _display: inline-block\" t=\"5\" times=\"\" isout=\"0\">%s</SPAN></P></DIV>\n" +
            "<DIV class=tip style=\"COLOR: #cccccc; TEXT-ALIGN: center\">该邮件为系统自动发送,请勿进行回复 </DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></BODY>\n" +
            "</html>\n";

使用

Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress(account));
            message.setRecipient(RecipientType.TO, new InternetAddress(to));
            message.setSubject("注册验证码");
            message.setContent(String.format(content, "验证码", "xx公司", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())), "text/html;charset=UTF-8");
            Transport.send(message);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值