SpringBoot整合JavaMail发送邮件

  1. 首先需要获取邮箱第三方服务授权码

qq邮箱:

点击账户,往下滑如图所示,我的已经开启了,没开启的可以开启一下

136邮箱:

我现在用的是qq所以网易这个我就没有开启,如果你们用网易的话可以开启,开启之后需要发送短信,验证通过之后会有一个授权码

网易和QQ邮箱都可以,下面我就用QQ邮箱进行展示 

2.导入相关依赖

我是在springboot官网下载的

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

3.配置yml文件

4.创建一个实体类 

这里创建了一个实体类

import java.io.Serializable;

public class EmailModel implements Serializable {
    /**
     * 收件人姓名
     **/
    private String recieverName;

    /**
     * 收件人邮箱地址
     **/
    private String recieverEmailAddress;

    /**
     * 邮件主题
     **/
    private String emailTheme;

    /**
     * 邮件内容
     **/
    private String emailContent;





    public String getRecieverName() {
        return recieverName;
    }

    public void setRecieverName(String recieverName) {
        this.recieverName = recieverName;
    }

    public String getRecieverEmailAddress() {
        return recieverEmailAddress;
    }

    public void setRecieverEmailAddress(String recieverEmailAddress) {
        this.recieverEmailAddress = recieverEmailAddress;
    }

    public String getEmailTheme() {
        return emailTheme;
    }

    public void setEmailTheme(String emailTheme) {
        this.emailTheme = emailTheme;
    }

    public String getEmailContent() {
        return emailContent;
    }

    public void setEmailContent(String emailContent) {
        this.emailContent = emailContent;
    }
}

5.工具类

package com.lwy.util;


import com.lwy.pojo.EmailModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.MailException;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.mail.javamail.MimeMessagePreparator;
import org.springframework.stereotype.Component;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;

@Component
public class MailSendUtils {

    private static final Logger logger = LoggerFactory.getLogger(MailSendUtils.class);//定义logger,打印日志用的。

    /**
     * 发送者地址
     **/
    private static String posterAdress = "2********08@qq.com";    

    /**
     * 发送者姓名
     **/
    private static final String posterName = "小艳";

    @Autowired
    private JavaMailSender javaMailSender;

    @Autowired
    private JavaMailSenderImpl javaMailSenderImpl;

    /**
     * 文本发送
     **/
    public  void sendEmailAsText(final EmailModel emailModel) {
        MimeMessagePreparator mimeMessagePreparator = mimeMessage -> {
            mimeMessage.setFrom(posterAdress);
            mimeMessage.setRecipients(Message.RecipientType.TO, emailModel.getRecieverEmailAddress());
            mimeMessage.setText("<html><body>"
                    + "hello:" + emailModel.getRecieverName()
                    + "<br>" + "msg:" + emailModel.getEmailContent()
                    + "<br>" + "from :" + posterName
                    + "</body></html>");
        };
        try {
            this.javaMailSender.send(mimeMessagePreparator);
            logger.info("邮件已返送至[{}]邮箱!", emailModel.getRecieverName());
        } catch (MailException e) {
            logger.error("邮箱异常:{}", e);
        }
    }

    /**
     * html 网页发送
     * 该方法为同步方法
     **/
    public void sendEmailAsSysExceptionHtml(final EmailModel emailModel) {//用final关键字修饰的变量,只能进行一次赋值操作,并且在生存期内不可以改变它的值。
        MimeMessage mimeMessage = javaMailSenderImpl.createMimeMessage();
        MimeMessageHelper mimeMessageHelper;
        try {
            mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
            mimeMessageHelper.setFrom(posterAdress);
            mimeMessageHelper.setTo(emailModel.getRecieverEmailAddress());
            mimeMessageHelper.setText("<!DOCTYPE html>\n" +
                            "<html>\n" +
                            "\t<head>\n" +
                            "\t\t<meta charset=\"UTF-8\">\n" +
                            "\t\t<title></title>\n" +
                            "\t</head>\n" +
                            "\t<style>\n" +
                            "\t\tbody,\n" +
                            "\t\ttable,\n" +
                            "\t\ttbody,\n" +
                            "\t\ttr {\n" +
                            "\t\t\tbackground-color: aquamarine;\n" +
                            "\t\t\tbackground-size: 100%;\n" +
                            "\t\t}\n" +
                            "\t</style>\n" +
                            "\n" +
                            "\t<body>\n" +
                            "\t\t<table border=\"solid 2 px\" align=\"center\" style=\"text-align: center;\">\n" +
                            "\t\t\t<tbody>\n" +
                            "\t\t\t\t<tr>\n" +
                            "\t\t\t\t\t<td width=\"200px\" bgcolor=\"coral\">时间</td>\n" +
                            "\t\t\t\t\t<td width=\"80%\" bgcolor=\"azure\">" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "</td>\n" +
                            "\t\t\t\t</tr>\n" +
                            "\t\t\t\t<tr>\n" +
                            "\t\t\t\t\t<td width=\"200px\" bgcolor=\"coral\">信息</td>\n" +
                            "\t\t\t\t\t<td width=\"80%\" bgcolor=\"azure\">" + "测试" + "</td>\n" +
                            "\t\t\t\t</tr>\n" +
                            "\t\t\t\t<tr>\n" +
                            "\t\t\t\t\t<td width=\"200px\" bgcolor=\"coral\">堆栈</td>\n" +
                            "\t\t\t\t\t<td width=\"80%\" bgcolor=\"azure\" style=\"text-align: left;\">" + emailModel.getEmailContent() + "</td>\n" +
                            "\t\t\t\t</tr>\n" +
                            "\t\t\t</tbody>\n" +
                            "\t\t</table>\n" +
                            "\t</body>\n" +
                            "\n" +
                            "</html>"
                    , true);

            this.javaMailSender.send(mimeMessage);
            logger.info("邮件已返送至[{}]邮箱!", emailModel.getRecieverEmailAddress());

        } catch (MessagingException e) {
            e.printStackTrace();
        } catch (MailException e) {
            logger.error("邮箱异常:{}", e);
        }
    }


    /**
     * 批量发送邮件
     */

    public void  setBatchMessages(final EmailModel emailModel) {
        String[] strArr = {"29*******8@qq.com","16*******8@qq.com"};
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();// 通过MimeMessage创建一个MimeMessageHelper msgHelper
        MimeMessageHelper messageHelper;
        try {
            messageHelper = new MimeMessageHelper(mimeMessage, true); 使用MimeMessageHelper设置邮件的发送地址、收件地址、主题以及内容
            messageHelper.setFrom(posterAdress); // 发送的邮件来自哪里
            messageHelper.setTo(strArr);// 发送的邮件到哪里
            messageHelper.setText("<!DOCTYPE html>\n" +
                            "<html>\n" +
                            "\t<head>\n" +
                            "\t\t<meta charset=\"UTF-8\">\n" +
                            "\t\t<title></title>\n" +
                            "\t</head>\n" +
                            "\t<style>\n" +
                            "\t\tbody,\n" +
                            "\t\ttable,\n" +
                            "\t\ttbody,\n" +
                            "\t\ttr {\n" +
                            "\t\t\tbackground-color: aquamarine;\n" +
                            "\t\t\tbackground-size: 100%;\n" +
                            "\t\t}\n" +
                            "\t</style>\n" +
                            "\n" +
                            "\t<body>\n" +
                            "\t\t<table border=\"solid 2 px\" align=\"center\" style=\"text-align: center;\">\n" +
                            "\t\t\t<tbody>\n" +
                            "\t\t\t\t<tr>\n" +
                            "\t\t\t\t\t<td width=\"200px\" bgcolor=\"coral\">时间</td>\n" +
                            "\t\t\t\t\t<td width=\"80%\" bgcolor=\"azure\">" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "</td>\n" +
                            "\t\t\t\t</tr>\n" +
                            "\t\t\t\t<tr>\n" +
                            "\t\t\t\t\t<td width=\"200px\" bgcolor=\"coral\">信息</td>\n" +
                            "\t\t\t\t\t<td width=\"80%\" bgcolor=\"azure\">" + "测试" + "</td>\n" +
                            "\t\t\t\t</tr>\n" +
                            "\t\t\t\t<tr>\n" +
                            "\t\t\t\t\t<td width=\"200px\" bgcolor=\"coral\">堆栈</td>\n" +
                            "\t\t\t\t\t<td width=\"80%\" bgcolor=\"azure\" style=\"text-align: left;\">" + emailModel.getEmailContent() + "</td>\n" +
                            "\t\t\t\t</tr>\n" +
                            "\t\t\t</tbody>\n" +
                            "\t\t</table>\n" +
                            "\t</body>\n" +
                            "\n" +
                            "</html>"
                    , true);
            this.javaMailSender.send(mimeMessage);
            logger.info("邮箱已返送至[{}]邮箱!", strArr);
            logger.info("现在时间为[{}]", new Date());
        } catch (Exception e) {
            logger.error("邮箱异常:{}", e);
        }
    }
}

6. controller层

@Controller
@RequestMapping("javaMailController")
public class JavaMailController {
    @Autowired
    private MailSendUtils mailSendUtils;

    @RequestMapping("sendMail")
    @ResponseBody
    public String sendMail(){
        EmailModel emailModel = new EmailModel();
        emailModel.setRecieverName("1111");
        //接收方的地址
        emailModel.setRecieverEmailAddress("163******@qq.com");
        //主题
        emailModel.setEmailTheme("想吃肉");
        //内容
        emailModel.setEmailContent("想吃肉");
        //调用工具类
        mailSendUtils.setBatchMessages(emailModel);
        return "ok";
    }
}

接下来在前台调用一下就可以了,工具类有三个方法比如批量发送等,可以在controller层测试

这个是批量发送收到的格式,可以自己设置,在设置类,大家感兴趣的可以研究,我就略知一二吧,有不合适不懂的可以评论私信 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值