美文网首页
email邮件服务

email邮件服务

作者: 我是电饭煲 | 来源:发表于2020-03-31 00:09 被阅读0次

    email邮箱服务创建步骤

    引入

    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-mail</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    

    application.yml qq邮箱配置

    spring:
      mail:
        host: smtp.exmail.qq.com
        password: QLWG5W9nBmcGAENb # 授权码
        username: yuanfeng@qq.com
        sendTo: zhangyuanfeng@bitren.onaliyun.com
    

    邮箱服务接口

    public interface IEmailService {
        void sendSimpleEmailToAppoint(String subject, String content);
        void sendAttachmentsMailToAppoint(String subject, String content, String filePath);
        void sendInlineResourceMailToAppoint(String subject, String content, String rscPath, String rscId);
        void sendHtmlMailToAppoint(String subject, String content);
        void sendThymeleafEmailToAppoint(String subject, String content);
    }
    

    邮箱服务实现

    /**
     * 邮件服务
     *
     * @author yuanfeng.z
     * @date 2019/11/15 17:15
     */
    @Slf4j
    @Service
    public class EmailServiceImpl implements IEmailService {
        @Value(value = "${spring.mail.username}")
        private String sendFrom;
    
        @Value(value = "${spring.mail.sendTo}")
        private List<String> sendToList;
    
        @Autowired
        private JavaMailSender javaMailSender;
    
        @Autowired
        private TemplateEngine templateEngine;
    
        /**
         * 发送文本邮件到指定邮箱
         *
         * @param subject
         * @param content
         */
        @Override
        public void sendSimpleEmailToAppoint(String subject, String content) {
            // 构造Email消息
            for (String sendTo : sendToList) {
                SimpleMailMessage message = new SimpleMailMessage();
                message.setFrom(sendFrom);
                message.setTo(sendTo);
                message.setSubject(subject);
                message.setText(content);
    
                try {
                    javaMailSender.send(message);
                } catch (Exception e) {
                    log.error("{} send message to {} fail, subject => {}", sendFrom, sendTo, subject);
                    return;
                }
                log.info("{} send message to {} success, subject => {}", sendFrom, sendTo, subject);
            }
        }
    
        /**
         * 发送文本和附件邮件到指定邮箱
         *
         * @param subject
         * @param content
         * @param filePath 文件路径
         */
        @Override
        public void sendAttachmentsMailToAppoint(String subject, String content, String filePath) {
            MimeMessage message = javaMailSender.createMimeMessage();
    
            for (String sendTo : sendToList) {
                try {
                    MimeMessageHelper helper = new MimeMessageHelper(message, true);
                    helper.setFrom(sendFrom);
                    helper.setTo(sendTo);
                    helper.setSubject(subject);
                    helper.setText(content, true);
    
                    FileSystemResource file = new FileSystemResource(new File(filePath));
                    String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
                    helper.addAttachment(fileName, file);
    
                    javaMailSender.send(message);
                } catch (MessagingException e) {
                    log.error("{} send message to {} fail, subject => {}", sendFrom, sendTo, subject);
                    return;
                }
                log.info("{} send message to {} success, subject => {}", sendFrom, sendTo, subject);
            }
        }
    
        /**
         * 发送html邮件
         * @param subject
         * @param content
         */
        @Override
        public void sendHtmlMailToAppoint(String subject, String content) {
            // html 邮件对象
            MimeMessage message = javaMailSender.createMimeMessage();
    
            for (String sendTo : sendToList) {
                try {
                    //true表示需要创建一个multipart message
                    MimeMessageHelper helper = new MimeMessageHelper(message, true);
                    helper.setFrom(sendFrom);
                    helper.setTo(sendTo);
                    helper.setSubject(subject);
                    helper.setText(content, true);
    
                    javaMailSender.send(message);
                } catch (MessagingException e) {
                    log.error("{} send message to {} fail, subject => {}", sendFrom, sendTo, subject);
                    return;
                }
                log.info("{} send message to {} success, subject => {}", sendFrom, sendTo, subject);
            }
    
        }
    
        /**
         * 发送文本和附件邮件到指定邮箱
         *
         * @param subject
         * @param content
         * @param rscPath
         * @param rscId   任意
         */
        @Override
        public void sendInlineResourceMailToAppoint(String subject, String content, String rscPath, String rscId) {
            MimeMessage message = javaMailSender.createMimeMessage();
    
            for (String sendTo : sendToList) {
                try {
                    MimeMessageHelper helper = new MimeMessageHelper(message, true);
                    helper.setFrom(sendFrom);
                    helper.setTo(sendTo);
                    helper.setSubject(subject);
                    helper.setText(content, true);
    
                    FileSystemResource res = new FileSystemResource(new File(rscPath));
                    helper.addInline(rscId, res);
    
                    javaMailSender.send(message);
                } catch (MessagingException e) {
                    log.error("{} send message to {} fail, subject => {}", sendFrom, sendTo, subject);
                    return;
                }
                log.info("{} send message to {} success, subject => {}", sendFrom, sendTo, subject);
            }
        }
    
        /**
         * html模板发送邮箱
         * @param subject
         * @param content
         */
        @Override
        public void sendThymeleafEmailToAppoint(String subject, String content) {
            // 构造Email消息
            for (String sendTo : sendToList) {
    
                //创建邮件正文
                Context context = new Context();
                context.setVariable("id", "006");
                String emailContent = templateEngine.process("emailTemplate", context);
    
                try {
                    this.sendHtmlMailToAppoint(subject, emailContent);
                } catch (Exception e) {
                    log.error("{} send message to {} fail, subject => {}", sendFrom, sendTo, subject);
                    return;
                }
                log.info("{} send message to {} success, subject => {}", sendFrom, sendTo, subject);
            }
        }
    
    }
    

    测试

    public class EmailTest extends ZddPublicserviceApplicationTests {
    
        @Autowired
        private EmailServiceImpl sendSimpleEmail;
    
        @Test
        public void sendSimpleEmailToAppoint() {
            sendSimpleEmail.sendSimpleEmailToAppoint("test", "test");
        }
    
        @Test
        public void sendAttachmentsMailToAppoint() {
            String filePath="e:\\tmp\\application.log";
            sendSimpleEmail.sendAttachmentsMailToAppoint("主题:带附件的邮件", "有附件,请查收!", filePath);
        }
    
        @Test
        public void sendInlineResourceMailToAppoint() {
            String rscId = "neo006";
            String content="<html><body>这是有图片的邮件:<img src=\'cid:" + rscId + "\' ></body></html>";
            String imgPath = "C:\\Users\\summer\\Pictures\\favicon.png";
    
            sendSimpleEmail.sendInlineResourceMailToAppoint("主题:这是有图片的邮件", content, imgPath, rscId);
        }
    }
    

    qq邮箱授权码设置及代码教程

    https://www.jiweichengzhu.com/article/124fc2989b984a789208761d332e4cf2

    教程

    https://www.cnblogs.com/ityouknow/p/6823356.html
    https://juejin.im/post/5af25c61518825670a1046e9

    亚马逊教程

    https://blog.csdn.net/x_san3/article/details/82911909

    相关文章

      网友评论

          本文标题:email邮件服务

          本文链接:https://www.haomeiwen.com/subject/uhgsictx.html