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.com993143SMTP smtp.163.com465/99425POP3 pop.163.com995110
阅读全文
0 0
- springboot中发送各种类型的邮件
- SpringBoot中进行邮件发送
- 飘逸的python - 发送带各种类型附件的邮件
- javamail各种邮件的发送
- springboot发送邮件的实现例子
- springBoot发送邮件
- springboot 发送邮件
- SpringBoot发送邮件
- springboot发送邮件
- springboot发送邮件
- springboot发送邮件
- JAVA发送邮件及springboot发送邮件
- Python3.3 邮件发送 含附件(各种类型文件)
- Spring实现各种邮件的发送
- java发送邮件遇到的各种问题
- Spring发送邮件的各种方法
- spring各种邮件发送
- spring各种邮件发送
- C++学习(42)
- Python 正则表达式
- Android7.0中文文档(API)--- DialerFilter
- 【ROS书籍】ROSByExampleⅡ——第三章 使用ROS任务执行
- oracle导入.dmp文件过程遇到的问题解决
- springboot中发送各种类型的邮件
- swap nodes in pairs
- 【面试题22】二叉搜索树的后序遍历
- activity之间的切换效果
- Base64随记
- QT Creator4.3制作图标
- SYD8801 UART使用说明【uart轮发数据代码实现】【 uart中断发数据代码实现】【RFSleep函数对串口的影响】【中断中调用串口打印函数有可能会造成死机】
- 554. Brick Wall
- Thrift使用示例