100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > springboot快速启动(十一)—— 整合Mail发送邮件

springboot快速启动(十一)—— 整合Mail发送邮件

时间:2019-07-08 08:52:05

相关推荐

springboot快速启动(十一)—— 整合Mail发送邮件

一、快速发送邮件

SMTP协议:

SMTP是一个相对简单的基于文本的协议。在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确认是存在的),然后消息文本会被传输。

工作过程:

SMTP协议的工作过程可分为如下3个过程:

(1)建立连接:在这一阶段,SMTP客户请求与服务器的25端口建立一个TCP连接。一旦连接建立,SMTP服务器和客户就开始相互通告自己的域名,同时确认对方的域名。(2)邮件传送:利用命令,SMTP客户将邮件的源地址、目的地址和邮件的具体内容传递给SMTP服务器,SMTP服务器进行相应的响应并接收邮件。(3)连接释放:SMTP客户发出退出命令,服务器在处理命令后进行响应,随后关闭TCP连接。

步骤

1、导入依赖

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

2、配置文件

server.port=8890# JavaMailSender 邮件发送的配置spring.mail.host= #QQ:spring.mail.username=xxx@#授权码spring.mail.password=xxxspring.mail.properties.mail.smtp.auth=truespring.mail.properties.mail.smtp.starttls.enable=truespring.mail.properties.mail.smtp.starttls.required=truespring.mail.default-encoding=UTF-8#eureka.client.serviceUrl.defaultZone=http://47.97.188.93:8761/eureka/#spring.application.name=mail-servermail.sender=xxx@#要和上面的username一致

演示代码

* @description mail配置类**/@Componentpublic class MailMsg {@Value("${mail.sender}")private String mailSender;public String getMailSender() {return mailSender;}public void setMailSender(String mailSender) {this.mailSender = mailSender;}}

* @description 实体类**/public class MailBean implements Serializable {/*** 邮件接收人*/private String recipient;/*** 邮件主题*/private String subject;/*** 邮件内容*/private String content;public String getRecipient() {return recipient;}public void setRecipient(String recipient) {this.recipient = recipient;}public String getSubject() {return subject;}public void setSubject(String subject) {this.subject = subject;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}}

* @description 控制层**/@RestController@RequestMapping(value = "v1/api")public class SendMailTest {@Autowiredprivate MailMsg mailMsg;@Autowiredprivate JavaMailSender mailSender;/*** 发送简单的邮件* @param mailBean* @return* @throws Exception*/@RequestMapping(value = "/sendmail",method = RequestMethod.GET)public String sendSimpleMail(@RequestBody MailBean mailBean) throws Exception {SimpleMailMessage message = new SimpleMailMessage();message.setFrom(mailMsg.getMailSender());message.setTo( mailBean.getRecipient());message.setSubject(" Theme " );message.setText("Hello: how have you been!");mailSender.send( message);return "发送成功!";}/*** 发送HTML格式的邮件* @param mailBean*/@RequestMapping(value = "/sendHtml",method = RequestMethod.GET)public String sendHTMLMail(@RequestBody MailBean mailBean) {MimeMessage mimeMailMessage = null;try {mimeMailMessage = mailSender.createMimeMessage();MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMailMessage, true);mimeMessageHelper.setFrom(mailMsg.getMailSender());mimeMessageHelper.setTo(mailBean.getRecipient());mimeMessageHelper.setSubject(mailBean.getSubject());StringBuilder sb = new StringBuilder();sb.append("<h1>SpirngBoot测试邮件HTML</h1>").append("\"<p style='color:#F00'>你是真的太棒了!</p>");mimeMessageHelper.setText(sb.toString(), true);mailSender.send(mimeMailMessage);} catch (Exception e) {e.printStackTrace();}return "success";}/*** 发送静态文件的邮件(附件)* @param mailBean*/@RequestMapping(value = "/sendAttachment",method = RequestMethod.GET)public String sendAttachmentMail(@RequestBody MailBean mailBean) {MimeMessage mimeMailMessage = null;try {mimeMailMessage = mailSender.createMimeMessage();MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMailMessage, true);mimeMessageHelper.setFrom(mailMsg.getMailSender());mimeMessageHelper.setTo(mailBean.getRecipient());mimeMessageHelper.setSubject(mailBean.getSubject());mimeMessageHelper.setText(mailBean.getContent());//文件路径FileSystemResource file = new FileSystemResource(new File("src/main/resources/static/image/mail.jpg"));mimeMessageHelper.addAttachment("mail.jpg", file);mailSender.send(mimeMailMessage);} catch (Exception e) {e.printStackTrace();}return "success";}}

一般发送邮件/短信都会开启异步任务去处理 所以大家自行使用@EnableAsync注解开启

异步任务开启步骤:/weixin_42083036/article/details/103140051

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。