spring使用MimeMessage和MimeMessageHelper发送邮件

spring使用MimeMessage和MimeMessageHelper发送邮件

今天接到一个发送邮件的需求:统计信息通过邮件以表格形式发送。
通过资料了解,MimeMessage比较好使,OK,搞起!

如果使用springboot项目的话,需要在pom.xml中加入spring-boot-starter-mail依赖

步骤:1、建一个HTML模板,就是你邮件的样式。可参考下面的模板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body style="color: #666; font-size: 14px; font-family: 'Open Sans',Helvetica,Arial,sans-serif;">
<div class="box-content" style="width: 80%; margin: 20px auto; max-width: 1500px; min-width: 600px;">
    <div class="header-tip" style="font-size: 12px;
                                   color: #aaa;
                                   text-align: right;
                                   padding-right: 25px;
                                   padding-bottom: 10px;">
    </div>
    <div class="info-top" style="padding: 15px 25px;
                                 border-top-left-radius: 10px;
                                 border-top-right-radius: 10px;
                                 background: {0};
                                 color: #fff;
                                 overflow: hidden;
                                 line-height: 32px;">
        <div style="color:#010e07"><strong>邮件通知</strong></div>
    </div>
    <div class="info-wrap" style="border-bottom-left-radius: 10px;
                                  border-bottom-right-radius: 10px;
                                  border:1px solid #ddd;
                                  overflow: hidden;
                                  padding: 15px 15px 20px;">
        <div class="tips" style="padding:15px;">
            <p style=" list-style: 160%; margin: 10px 0;">Hi,</p>
            <p style=" list-style: 160%; margin: 10px 0;">{1}</p>
        </div>
        <div class="time" style="text-align: right; color: #999; padding: 0 15px 15px;">{2}</div>
        <br>
        <table class="list" style="width: 100%; border-collapse: collapse; border-top:1px solid #eee; font-size:12px; table-layout: fixed;">
            <thead>
            <tr style=" background: #fafafa; color: #333; border-bottom: 1px solid #eee;">
                {3}
            </tr>
            </thead>
            <tbody>
            {4}
            </tbody>
        </table>
    </div>
</div>
</body>
</html>

如果需要扩展,可自行修改表格及模板代码。另外“{4}”这种形式的代码,表示数据填充的位置。

步骤2、使用Message类的format方法,把数据向模板中填充。

MessageFormat.format(
	FileUtil.getFile("templates/emailTemplate.html"), //邮件模板位置
	emailHeadColor, //{0}位置
	contentText, //{1}位置
	sendTime, //{2}位置
	header, //{3}位置
	linesBuffer.toString()//{4}位置
	)

各参数根据实际情况填写。
getFile方法:
ResourceLoader 介绍:ResourceLoader
Resource介绍:Resource

public static String getFile(String filePath) {
		//不明白为什么的,可以看看上边两个类的说明
        ResourceLoader resourceLoader = new DefaultResourceLoader();
        //建议看看Resource介绍
        Resource resource=resourceLoader.getResource("classpath:"+filePath);
        StringBuffer strBuff = new StringBuffer();
        try (InputStream inputStream = resource.getInputStream()) {
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            String string = null;
            while ((string = bufferedReader.readLine()) != null) {
                strBuff.append(string);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return strBuff.toString();
    }

步骤3、使用JavaMailSenderImpl配置邮件发送器,MimeMessage构建邮件,MimeMessageHelper构建邮件收发信息

JavaMailSenderImpl sender = new JavaMailSenderImpl();
        sender.setHost(“smtp:qq.com”);//邮箱地址(QQ邮箱为例)
        sender.setUsername(“username”);//对应邮箱的用户名
        sender.setPassword(“password”);//密码
        sender.setDefaultEncoding(StandardCharsets.UTF_8.toString());//邮件编码方式
        Properties p = new Properties();
        p.put("mail.smtp.host", “smtp:qq.com”);
        p.put("mail.smtp.port", "465");
        p.put("mail.smtp.auth", "false");//是否需要开启邮箱验证
        p.put("mail.smtp.timeout",10000);//时间延迟
        p.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");//设置为SSL协议
        sender.setJavaMailProperties(p);
        
		//使用MimeMessage,MIME协议
        MimeMessage message = sender.createMimeMessage();
        MimeMessageHelper helper;
        //MimeMessageHelper帮助我们设置更丰富的内容
        try {
            helper = new MimeMessageHelper(message, true);
            helper.setFrom(tdEmailInfo.getSendUsername());//发送人
            helper.setTo(tdEmailInfo.getRecivedUsername());//接收人
            helper.setBcc(tdEmailInfo.getCopayUsername());//抄送人
            helper.setSubject(“邮件标题”);//邮件标题
            helper.setText(content, true);//true代表支持html,邮件内容
            sender.send(message);

至此,邮件发送搞定!
以上仅供参考,有不足之处,欢迎批评指正!

发布了4 篇原创文章 · 获赞 0 · 访问量 73
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览