前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaMail邮件服务MailUtil

JavaMail邮件服务MailUtil

作者头像
Diuut
发布2022-11-22 20:10:28
9340
发布2022-11-22 20:10:28
举报
文章被收录于专栏:DiuutDiuut

需求: 统一一个公共服务模块发送邮件以及短信信息供所有项目使用

定义一个MailBean用于存放Mail数据

代码语言:javascript
复制
import lombok.Data;

import java.io.File;
/**
 * @Author Diuut
 * @Date 2020/7/9  17:25
 */
@Data
public class MailBean {
    private String subject;  //主题
    private String content;  //内容
    private String toAccount;  //发送地址
    private File attachmentFile;  //附件文件
    private String attachmentFileName;  //附件文件名
}

在yml中准备好邮件发送所需配置参数

代码语言:javascript
复制
spring:
     mail:
         host: smtp.xxxx.aliyun.com            #发送服务器地址
         port: 25                              #端口号
         username: xxxxxxx@mxxxxxxxx.net       #发送人地址
         password: xxxxxxxxxxx                 #密码

编写MailUtil

代码语言:javascript
复制
import com.miracle.message.pojo.MailBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.mail.MailProperties;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;
import java.io.UnsupportedEncodingException;

/**
 * @Author Diuut
 * @Date 2020/7/9  17:10
 */
@Component
public class MailUtil {
    @Autowired
    JavaMailSender mailSender;
    @Autowired
    MailProperties mailProperties;

    /**
     * 发送邮件
     * @param mailBean 邮件内容
     */
    public void sendMail(MailBean mailBean) {
        SimpleMailMessage mimeMessage = new SimpleMailMessage();
        mimeMessage.setFrom(mailProperties.getUsername());
        mimeMessage.setTo(mailBean.getToAccount());
        mimeMessage.setSubject(mailBean.getSubject());
        mimeMessage.setText(mailBean.getContent());
        mailSender.send(mimeMessage);
    }

    /**
     * 发送邮件-附件邮件
     *
     * @param mailBean
     */
    public boolean sendMailAttachment(MailBean mailBean) {
        try {
            MimeMessage mimeMessage = mailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
            helper.setFrom(mailProperties.getUsername());
            helper.setTo(mailBean.getToAccount());
            helper.setSubject(mailBean.getSubject());
            helper.setText(mailBean.getContent(), true);
            // 增加附件名称和附件
            helper.addAttachment(MimeUtility.encodeWord(mailBean.getAttachmentFileName(), "utf-8", "B"), mailBean.getAttachmentFile());
            mailSender.send(mimeMessage);
            return true;
        } catch (MessagingException | UnsupportedEncodingException e) {
            e.printStackTrace();
            return false;
        }
    }
}

//再附上邮箱的正则表达判断,应该用得着   
//emil.matches("^[0-9a-z]+\\w*@([0-9a-z]+\\.)+[0-9a-z]+$")

以上,就可以在service中@Autowire调用了,

填坑:不要乱用异步@Async,自以为异步可以提高响应速度,却导致响应太快,后台还没有处理好前台已经响应了,结果消费方返回值一直是null。

Post Views: 120

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020年7月10日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
短信
腾讯云短信(Short Message Service,SMS)可为广大企业级用户提供稳定可靠,安全合规的短信触达服务。用户可快速接入,调用 API / SDK 或者通过控制台即可发送,支持发送验证码、通知类短信和营销短信。国内验证短信秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,全球多服务站点,稳定可靠。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档