SpringBoot完成文本、图片、附件与HTML邮件发送

首先加入相应的jar包,加入到pom文件中

<!--spring-boot-starter-mail -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-mail</artifactId>
   <version>2.1.3.RELEASE</version>
</dependency>

然后再SpringBoot的主配置文件中 配置邮件所有要的信息:这里我选用的是QQ邮箱为发送邮件的一方

#Emails QQ
spring.mail.host=smtp.qq.com
spring.mail.username=xxxxx@qq.com//发送邮件的一方
#授权码:这里的密码不是登陆邮箱的密码 而是在邮箱设置中的授权码
spring.mail.password=1234567
spring.mail.default-encoding=utf-8//发送邮件的默认编码格式

1.文本邮件

@Component
public class EmailText {
//从配置文件中引入发送邮件的邮箱
    @Value("${spring.mail.username}")
    private String from;
//引入JavaMailSender
    @Autowired
    private JavaMailSender Sender;

    public void sendSimpleTextEmail(String To,String Subject,String content){

        SimpleMailMessage simpleMessage=new SimpleMailMessage();
        //发送给谁
        simpleMessage.setTo(To);
        //主题
        simpleMessage.setSubject(Subject);
        //发送的文本信息
        simpleMessage.setText(content);
        //谁去发送邮件
        simpleMessage.setFrom(from);
        //开始发送
        Sender.send(simpleMessage);
    }
}

2.图片HTML邮件

@Component
public class EmailHtml {

    @Value("${spring.mail.username}")
    private String from;

    @Autowired
    private JavaMailSender Sender;

    public void sendHtmlEmail(String To,String Subject,String content) throws Exception{

        MimeMessage simpleMessage=Sender.createMimeMessage();
        MimeMessageHelper MessageHelper=new MimeMessageHelper(simpleMessage,true);

        //谁去发送邮件
        MessageHelper.setFrom(from);
        //发送给谁
        MessageHelper.setTo(To);
        //主题
        MessageHelper.setSubject(Subject);
        //发送的文本信息
        MessageHelper.setText(content,true);
        //开始发送
        Sender.send(simpleMessage);
    }
}

3.附件邮件

@Component
public class AttachEmail {

    @Value("${spring.mail.username}")
    private String from;

    @Autowired
    private JavaMailSender Sender;

    public void sendAttachEmail(String To,String Subject,String content,String path) throws Exception{

        MimeMessage simpleMessage=Sender.createMimeMessage();
        MimeMessageHelper MessageHelper=new MimeMessageHelper(simpleMessage,true);

        //谁去发送邮件
        MessageHelper.setFrom(from);
        //发送给谁
        MessageHelper.setTo(To);
        //主题
        MessageHelper.setSubject(Subject);
        //发送的文本信息
        MessageHelper.setText(content,true);
        //加载附件资源
        FileSystemResource file=new FileSystemResource(new File(path));
        //获取附件的名称
        String filename=file.getFilename();
        MessageHelper.addAttachment(filename,file);
        //开始发送
        Sender.send(simpleMessage);
    }
}

 

4.图片邮件

//发送图片邮件
@Component
public class EmailPicture {
    @Value("${spring.mail.username}")
    private String from;

    @Autowired
    private JavaMailSender Sender;

    public void sendPictureEmail(String To,String Subject,String content,String path,String picId) throws Exception{

        MimeMessage simpleMessage=Sender.createMimeMessage();
        MimeMessageHelper MessageHelper=new MimeMessageHelper(simpleMessage,true);

        //谁去发送邮件
        MessageHelper.setFrom(from);
        //发送给谁
        MessageHelper.setTo(To);
        //主题
        MessageHelper.setSubject(Subject);
        //发送的文本信息
        MessageHelper.setText(content,true);
        //加载图片资源
        FileSystemResource file=new FileSystemResource(new File(path));
        //发送多张图片 图片相同  则pic相同 重复写MessageHelper.addInline(picId,file);
        MessageHelper.addInline(picId,file);
        //MessageHelper.addInline(picId,file);发送多张相同的图片
        //获取附件的名称
        String filename=file.getFilename();
        //开始发送
        Sender.send(simpleMessage);
    }
}

5.进行测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class MybussinessApplicationTests {

   @Autowired
   private EmailText text;

   @Autowired
   private EmailHtml html;

   @Autowired
   private AttachEmail attach;

   @Autowired
   private EmailPicture Picture;

   String content ="<html>\n <body>\n <h3> hello world,这是一封HTML邮件!<h3>\n </body>\n </html>\n ";

   @Test
   public void setText() {
      text.sendSimpleTextEmail("xxxx@qq.com.cn","你好","hello world");
      //System.out.println("hello world!!!");
   }

   @Test
   public void setHtml() {
      try {
         html.sendHtmlEmail("xxxx@qq.com.cn","你好",content);
      }catch (Exception e){
         e.getMessage();
      }
   }

   @Test
   public void setAttach() {
      try {
         attach.sendAttachEmail("xxxx@qq.com.cn","你好","附件邮件","/Users/wangqiang/Downloads/mmall/readme.zip");
      }catch (Exception e){
         e.getMessage();
      }
   }

   String pid="wangqiang001";
   String path="/Users/wangqiang/Downloads/mmall/010.jpg";
   String Piccontent ="<html>\n <body>\n  hello world,这是一封有图片的邮件:<img src=\'cid:"+pid+"\'></img></body>\n </html>\n ";
   //如果发送多张 图片的话 可以在Piccontent 中 重复写<img src=\'cid:"+pid+"\'></img>  更换cid的编号
   @Test
   public void setPic() {
      try {
         Picture.sendPictureEmail("xxxx@qq.com.cn","图片邮件",Piccontent,path,pid);
      }catch (Exception e){
         e.getMessage();
      }
   }
}

6.模版邮件:在实际的开发当中,邮件的主体内容不会发生变化  主要变化的是用的信息,这种类型的邮件 特别适合模版邮件进行发送

首先添加jar包

<!--Thymeleaf-->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
然后 在项目的/resources/templates文件中创建一个HTML模版
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>邮件模版</title>
</head>
<body>
    您好!非常感谢注册成为我们的会员,点击链接进行最后一步验证注册<br/>
    <a href="@{https://blog.csdn.net/m0_37871296/article/details/{id}(id=${id}})}">激活账户</a>
</body>
</html>
//theyleaf的模版引擎
   @Autowired
   private TemplateEngine Engine;
   //使用HTML方式发送邮件
   @Autowired
   private EmailHtml html1;
   @Test
   public void testTemplateEmail(){
      Context context=new Context();
      context.setVariable("id","93380034");

      String templEmail=Engine.process("EmailTemplate",context);
      try {
         html1.sendHtmlEmail("xxxx@qq.com.cn","模版邮件",templEmail);
      }catch (Exception e){
         e.getMessage();
      }
   }
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值