springboot中发送各种类型的邮件

32 篇文章 0 订阅
28 篇文章 0 订阅


最近由于工作需要,完成了在springboot下的一些种类邮件的发送,主要有:纯文本的,带有html的,带有附件的和带有模板的等等.


说下流程吧.

一,首先在pom.xml中配置依赖.如下所示.

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.3.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>


  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
  </properties>


  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.16.6</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>RELEASE</version>
    </dependency>
    <dependency>
      <groupId>com.sun.mail</groupId>
      <artifactId>javax.mail</artifactId>
      <version>RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
          <fork>true</fork>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
 
二,这个是application.properties
 
spring.mail.host=smtp.163.com
spring.mail.username=              #你的邮箱地址或者邮箱的用户名
spring.mail.password=              #你的邮箱密码
spring.mail.default-encoding=UTF-8
mail.fromMail.addr=                #你的发送邮箱地址,eg:1821111@163.com
三,由于我使用了模板所以说下它的路径:
src/main/resources/templates/emailTemplate.html
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head>
  <meta charset="UTF-8"/>
  <title>Title</title>
</head>
<body>
  您好,这是验证邮件,请点击下面的链接完成验证,<br/>
  <a href="#" th:href="@{ http://www.********.com/neo/{id}(id=${id}) }">激活账号</a>
</body>
</html>
四,下面是业务接口及相关的类.
MailService 接口和 MailServiceImpl类.

public interface MailService {


    public void sendSimpleMail(String to,String subject,String content);


    public void sendHtmlMail(String to,String subject,String content);


    public void sendAttachments(String to,String subject,String content,String filePath);


    public void sendInLineResourceMail(String to,String subject,String content,String rscPath,String rscId);
}




package com.springboot.mongodb.service;


import java.io.File;


import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;


import com.sun.xml.internal.org.jvnet.mimepull.MIMEMessage;


/**
 * @author Wengang Wang
 * @since Jun 13, 2017
 */
@Component
public class MailServiceImpl implements MailService{


    private final Logger logger= LoggerFactory.getLogger(MailServiceImpl.class);
    private final JavaMailSender javaMailSender;


    @Autowired
    public MailServiceImpl(JavaMailSender javaMailSender) {
        this.javaMailSender = javaMailSender;
    }


    @Value("${mail.fromMail.addr}")
    private String from;


    @Override
    public void sendSimpleMail(String to, String subject, String content) {
        SimpleMailMessage simpleMailMessage=new SimpleMailMessage();
        simpleMailMessage.setFrom(from);
        simpleMailMessage.setTo(to);
        simpleMailMessage.setSubject(subject);
        simpleMailMessage.setText(content);
        javaMailSender.send(simpleMailMessage);
        logger.info("email has send!");
    }


    @Override
    public void sendHtmlMail(String to, String subject, String content) {


        MimeMessage mimeMessage=this.javaMailSender.createMimeMessage();
        try {
            MimeMessageHelper mimeMessageHelper=new MimeMessageHelper(mimeMessage,true);
            mimeMessageHelper.setFrom(from);
            mimeMessageHelper.setTo(to);
            mimeMessageHelper.setSubject(subject);
            mimeMessageHelper.setText(content);
            javaMailSender.send(mimeMessage);
            logger.info("html email has send!");
        } catch (MessagingException e) {
//            e.printStackTrace();
            logger.error("html email occurs error!");
        }
    }


    @Override
    public void sendAttachments(String to, String subject, String content, String filePath) {
        MimeMessage mimeMessage=this.javaMailSender.createMimeMessage();
        try {
            MimeMessageHelper mimeMessageHelper=new MimeMessageHelper(mimeMessage,true);
            mimeMessageHelper.setFrom(from);
            mimeMessageHelper.setTo(to);
            mimeMessageHelper.setSubject(subject);
            mimeMessageHelper.setText(content,true);
            FileSystemResource fileSystemResource=new FileSystemResource(new File(filePath));
            String fileName=filePath.substring(filePath.lastIndexOf(File.separator)+1);
            mimeMessageHelper.addAttachment(fileName,fileSystemResource);
            javaMailSender.send(mimeMessage);
            logger.info("Attachment email has send!");
        } catch (MessagingException e) {
//            e.printStackTrace();
            logger.error("Attachment email occurs error!");
        }




    }


    @Override
    public void sendInLineResourceMail(String to, String subject, String content, String rscPath, String rscId) {


        MimeMessage mimeMessage=this.javaMailSender.createMimeMessage();
        try {
            MimeMessageHelper mimeMessageHelper=new MimeMessageHelper(mimeMessage,true);
            mimeMessageHelper.setFrom(from);
            mimeMessageHelper.setTo(to);
            mimeMessageHelper.setSubject(subject);
            mimeMessageHelper.setText(content,true);
            FileSystemResource fileSystemResource=new FileSystemResource(new File(rscPath));
            mimeMessageHelper.addInline(rscId,fileSystemResource);
            javaMailSender.send(mimeMessage);
            logger.info("Resource mail has send!");
        } catch (MessagingException e) {
//            e.printStackTrace();
            logger.error("Resource mail occurs error!");
        }
    }
}
五,最后是测试类.
package com.springboot.mongodb.service;


import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;


/**
 * @author Wengang Wang
 * @since Jun 13, 2017
 */
@RunWith(SpringRunner.class)
@SpringBootTest
public class MailServiceTest {
    @Autowired
    private MailService mailService;


    @Autowired
    private TemplateEngine templateEngine;


    @Test
    public void testSendSimpleMail(){
        this.mailService.sendSimpleMail("ziwenwang_time@163.com","mySubject","myContents");
    }


    @Test
    public void testSendAttachments(){
        this.mailService.sendAttachments("ziwenwang_time@163.com","mySubject","myContents","/Users/wengangwang/Documents/rabbitmq/RabbitMQ的几种方式的实现总结.txt");
    }


    @Test
    public void testSendInLineResourceMail(){
        this.mailService.sendInLineResourceMail("ziwenwang_time@163.com","mySubject","myContents","/Users/wengangwang/Documents/rabbitmq/rabbitmq的安装文档.txt","10021");
    }


    @Test
    public void testSendTemplateMail(){
        Context context=new Context();
        context.setVariable("id","007");
        String emailContents=this.templateEngine.process("emailTemplate",context);
        this.mailService.sendHtmlMail("ziwenwang_time@163.com","mySubject",emailContents);
    }


}
最后大家就可以愉快的进行测试了.
ps :163邮箱的信息
  
  
1,网易邮箱支持POP3/SMTP/IMAP服务,namely,默认是开启这些服务的.(SMTP,负责发送邮件.POP3负责接收邮件,IMAP和POP3类似,但是其提供的邮件“摘要浏览”方式极大地提高了邮件浏览速度)
2,网易163免费邮箱相关服务器信息
服务器名称 服务器地址 SSL协议端口号 非SSL协议端口号
IMAP imap.163.com 993 143
SMTP smtp.163.com 465/994 25
POP3 pop.163.com 995 110

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值