spring boot 发送邮件
2018-10-29 15:31:40来源:博客园 阅读 ()
一、前期准备
1.包引入
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
2.配置文件
spring.mail.protocol=smtp
spring.mail.host=smtp.163.com
spring.mail.username=zhaobaolintest@163.com
spring.mail.password=abc123456789
这里切记 password是授权密码 授权密码 授权密码 不是你的邮箱登陆密码
二、核心代码
import com.example.demo.dto.vo.MailSendVo; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import java.util.Date; import java.util.Properties; /** * @Author:zhao-baolin * @Description: 邮件发送类 * @Date:Created in 2018/4/17 * @Modified By: */ @Component public class MailUtil { @Value("${spring.mail.username}") private String fromMail; @Value("${spring.mail.password}") private String fromPassword; @Value("${spring.mail.host}") private String host; /** * 邮件发送 */ public boolean send(MailSendVo sendMailVo) throws Exception { System.out.println(sendMailVo.toString()); final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; if(StringUtils.isEmpty(sendMailVo.getToMail()) || StringUtils.isEmpty(sendMailVo.getTitle()) || StringUtils.isEmpty(sendMailVo.getContent())){ System.out.println("发送邮件参数为空 "+sendMailVo.toString()); return false; } // 1. 创建一封邮件 Properties props = new Properties(); props.setProperty("mail.smtp.host",host); props.setProperty("mail.smtp.auth", "true"); props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY); props.setProperty("mail.smtp.socketFactory.fallback", "false"); props.setProperty("mail.smtp.port", "465"); props.setProperty("mail.smtp.socketFactory.port", "465"); Authenticator auth = new Authenticator() { @Override public PasswordAuthentication getPasswordAuthentication(){ return new PasswordAuthentication(fromMail, fromPassword); } }; Session session = Session.getInstance(props,auth); // 2.创建一个Message,它相当于是邮件内容 Message message = new MimeMessage(session); // 设置发送者 message.setFrom(new InternetAddress(fromMail)); // 设置收件人 抄送给自己 避免网易554错误 message.setRecipient(MimeMessage.RecipientType.CC, new InternetAddress(fromMail)); message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(sendMailVo.getToMail())); // 邮件主题 message.setSubject(sendMailVo.getTitle()); // 邮件正文 message.setContent(sendMailVo.getContent(), "text/html;charset=utf-8"); // 设置显示的发件时间 message.setSentDate(new Date()); // 保存前面的设置 message.saveChanges(); try { // 创建 Transport用于将邮件发送 Transport.send(message); }catch (Exception e){ System.out.println(sendMailVo.getTitle()+"发送邮件失败 "+e.getMessage()); return false; } System.out.println("邮件发送结束"); return true; } }
里面有一个MailSendVo对象 这个对象封装了收件人、邮件标题、邮件内容三个属性 详情可以点进源码查看
三、源码分享
多说一句 邮件发送的速度与程序无关,千万不要跑程序里到处找bug,邮件发送只与网络有关。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Spring系列.ApplicationContext接口 2020-06-11
- springboot2配置JavaMelody与springMVC配置JavaMelody 2020-06-11
- 给你一份超详细 Spring Boot 知识清单 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
- 掌握SpringBoot-2.3的容器探针:实战篇 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash