springboot整合mail邮箱

sun公司提供了javaMail用来实现邮件发送,但是配置繁琐,spring中提供了javaMailSender用来简化邮件配置,springboot则提供了MailSendAutoConfiguration对邮件发送做了进一步的简化.

下面我们以QQ邮箱为例,进行发送操作

废话以后补充

1.登录QQ邮箱,进入设置

2.在账户选项卡中找到POP3/SMTP服务,点击开启按钮

3.(注意)下面我们获得一下授权码,因为项目需要发送邮箱的账户和密码,我们不能因为编写项目将自己账户的密码编写在项目中,所以这里的授权码就是代替密码的一个编码,

4.拿到授权码后,准备工作就完成了。

------------------------------------------------------------------

下面开始搭建环境

1.加入依赖

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

2.配置application.yml

spring:
  mail:
    host: smtp.qq.com
    port: 465
    username: 发送邮箱
    password: 授权码
    default-encoding: UTF-8
    properties:
      mail:
        smtp:
          socketFactory:
            class: javax.net.ssl.SSLSocketFactory
        debug: true

3.发送一个最简单的邮件

@Service
public class MailService {

    @Resource
    JavaMailSender javaMailSender;

    /**
     * 最简单的邮件发送
     * @param from  发送方
     * @param to    接收方
     * @param cc    第三方(非必填)
     * @param subject   标题
     * @param content   内容
     */
    public void sendSimpleMail(String from,String to,String cc,String subject,String content){
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setFrom(from);
        simpleMailMessage.setTo(to);
        simpleMailMessage.setCc(cc);
        simpleMailMessage.setSubject(subject);
        simpleMailMessage.setText(content);
        javaMailSender.send(simpleMailMessage);
    }
}

3.1测试一下(这里不管你们是Test测试也好,启动容器也好,小编就不写了)

   @Resource
   MailService mailService;

     public void sendSimpleMail(){
    mailService.sendSimpleMail("cyc@qq.com","zxc@qq.com","zxc@qq.com","标题","Hello World");
    }

4.发送带附件的邮件


    /**
     * 代附件的邮件
     * @param from
     * @param to
     * @param subject
     * @param content
     * @param file
     */
    public void sendAttachFileMail(String from, String to, String subject, String content, File file) {
        try{
            MimeMessage mimeMessage = javaMailSender.createMimeMessage();
            MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true);
            mimeMessageHelper.setFrom(from);
            mimeMessageHelper.setTo(to);
            mimeMessageHelper.setSubject(subject);
            mimeMessageHelper.setText(content);
            mimeMessageHelper.addAttachment(file.getName(),file);
            javaMailSender.send(mimeMessage);
        }catch (Exception e){
            e.printStackTrace();
        }
    }

4.1测试

  public void sendAttachFileMail(){
        mailService.sendAttachFileMail("cyc@qq.com","zxc@qq.com","标题","lll",new File("D://anz-t//U1902.exe"));
    }

5.带图片的邮件

    /**
     * 带图片的邮件
     * @param from
     * @param to
     * @param subject
     * @param content
     * @param srePAth
     * @param resIds
     */
    public void sendMailWithImg(String from,String to,String subject,String content,String [] srePAth,String[]resIds){
        if (srePAth.length!=resIds.length){
            System.out.println("发送失败");
            return;
        }
        try {
            MimeMessage mimeMessage = javaMailSender.createMimeMessage();
            MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
            mimeMessageHelper.setTo(to);
            mimeMessageHelper.setFrom(from);
            mimeMessageHelper.setSubject(subject);
            mimeMessageHelper.setText(content,true);
            for (int i = 0; i < srePAth.length; i++) {
                FileSystemResource res = new FileSystemResource(new File(srePAth[i]));
                mimeMessageHelper.addInline(resIds[i],res);
            }
            javaMailSender.send(mimeMessage);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }

5.1测试

public void sendMailWithImg(){
        mailService.sendMailWithImg("cyc@qq.com","zxc@qq.com","标题","图片1:<div><img src='cid:p01'/></div>图片2:<div><img src='cid:p02'/></div>",new String[]{"C:\\Users\\cyc\\Pictures\\Fedora.png","C:\\Users\\cyc\\Pictures\\windows7.jpg"},new String[]{"po1","po2"});
    }

也可以是FreeMarker或者thymeleaf模板,下面使用thymeleaf模板编写邮件发送功能

1.加依赖

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

2.服务

   /**
     * 使用thymeleaf模板
     * @param from
     * @param to
     * @param subject
     * @param context
     */
    public void sendHtmlMail(String from,String to ,String subject,String context){
        try {
            MimeMessage mimeMessage = javaMailSender.createMimeMessage();
            MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
            mimeMessageHelper.setFrom(from);
            mimeMessageHelper.setTo(to);
            mimeMessageHelper.setText(context);
            mimeMessageHelper.setSubject(subject);
            javaMailSender.send(mimeMessage);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }

3.在resources/templates目录下创建mailtemplate.html文件,代码如下:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org:">
<head>
    <meta charset="UTF-8">
    <title>邮件</title>
</head>
<body>

<div>
    邮件激活
</div>
<span th:text="${username}"></span>
<a href="http://www.baidu.com">核对无误请点击本链接激活邮箱</a>
</body>
</html>

4.测试

   @Autowired
    TemplateEngine templateEngine;

    public void sendHtmlMailThymeleaf(){
        Context context = new Context();
        context.setVariable("username","cyc");
        String mail = templateEngine.process("mailtemplate.html",context);
        mailService.sendHtmlMail("cyc@qq.com","zxc@qq.com","标题",mail);
    }

下面是我邮箱收到的邮件,内容不一样不要见怪

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值