springboot中发送各种类型的邮件

来源:互联网 发布:如何把矩阵正交化 编辑:程序博客网 时间:2024/06/01 18:45


最近由于工作需要,完成了在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.comspring.mail.username=              #你的邮箱地址或者邮箱的用户名spring.mail.password=              #你的邮箱密码spring.mail.default-encoding=UTF-8mail.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 */@Componentpublic 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)@SpringBootTestpublic 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.com993143
SMTP smtp.163.com465/99425
POP3 pop.163.com995110

原创粉丝点击