一:pom文件
springboot版本2.0
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
二:配置发送信息,配送发送信息有两种方式
一种是在application文件中配置
#邮件配置
spring.mail.host=邮件服务器地址
spring.mail.username=用户名
spring.mail.password=密码
spring.mail.default-encoding=UTF-8
#登录服务器是否需要认证
spring.mail.smtp.auth=true
#SSL证书Socket工厂
spring.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
#使用SMTPS协议465端口
spring.mail.smtp.socketFactory.port=465
#显示在收件人邮箱里面的发件人名称
spring.mail.self.username=用户名
一种在代码中配置,数据可以从动态更改
/**
* 这个方法在实际应用中,springboot会通过在配置文件application.xml
* 中加配置自动实例化JavaMailSenderImpl。
* 这里只是手动把信息写入JavaMailSenderImpl中。
*/
public static JavaMailSenderImpl initJavaMailSender() {
// 以下配置信息具体作用请自行百度
Properties properties = new Properties();
properties.setProperty("mail.debug", "true");// 是否显示调试信息(可选)
properties.setProperty("mail.smtp.starttls.enable", "false");
properties.setProperty("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
properties.setProperty("mail.smtp.auth", "true");
properties.setProperty("mail.smtp.starttls.required", "true");
properties.put(" mail.smtp.timeout ", " 25000 ");
// 发送邮件配置
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
javaMailSender.setJavaMailProperties(properties);
javaMailSender.setHost("网易:smtp.ym.163.com,QQ:smtp.qq.com");
javaMailSender.setUsername("发送者邮箱");
javaMailSender.setPassword("邮箱密码,个人QQ则是开通smtp给的验证码");
javaMailSender.setPort(465);// 发送邮件端口号,不写也没问题
javaMailSender.setDefaultEncoding("UTF-8");
return javaMailSender;
}
第一种因为是配置,所以在使用时要注入javaMailSender。
@Autowired
JavaMailSender javaMailSender;
第二种接收一下返回值
JavaMailSenderImpl mailSender = initJavaMailSender();
三:测试类代码
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootDemoApplicationTests {
/*@Autowired
Configuration configuration;*/
/*@Autowired
JavaMailSender javaMailSender;*/
private String from = "zhengyouzhen@dingeikeji.com";
private String[] tos = {"z10674577@qq.com"};
private String[] cc = {"test1@dingpeikeji.com","test2@qq.com"};
private String[] bcc = {""};
/**
* 发送附件
* @throws Exception
*/
@Test
public void sendAttachmentsMail() throws Exception {
// 发送邮件需要的配置信息
JavaMailSenderImpl mailSender = initJavaMailSender();
// 初始化发送邮件信息
MimeMessage mimeMessage = mailSender.createMimeMessage();
// 是否有文件
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
// 邮件具体信息----------------------------------------------------------------
// 发送者
helper.setFrom(from);
// 接收者,可传数组
helper.setTo(tos);
// 抄送者,可传数组
helper.setCc(cc);
// 密送者,可传数组
helper.setBcc(bcc);
// 邮件标题
helper.setSubject("主题:有附件");
// 邮件内容
helper.setText("有附件的邮件");
// 如果内容是html,可以把html换成单独的模版
// helper.setText("<html><body><h1>这是html<h1></body></html>", true);
// 附件信息
FileSystemResource file = new FileSystemResource(new File("D:/test.png"));
// 添加发送附件
helper.addAttachment("附件-1.jpg", file);
helper.addAttachment("附件-2.jpg", file);
// 邮件发送
mailSender.send(mimeMessage);
}
/**
* 模版邮件
* @throws Exception
*/
/*@Test
public void sendTemplateMail() throws Exception {
JavaMailSenderImpl mailSender = initJavaMailSender();
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setFrom("zhengyouzhen@dingpeikeji.com");
helper.setTo("z10647577@qq.com");
helper.setSubject("主题:模板邮件");
Map<String, Object> model = new HashedMap();
model.put("username", "zyz");
// 这里引用模版邮件用的是freemarker接收的
Template t = configuration.getTemplate("template.vm"); // 默认是在templates目录下,具体路径自己写
String text = FreeMarkerTemplateUtils.processTemplateIntoString(t, model);
helper.setText(text, true);
mailSender.send(mimeMessage);
}*/
/**
* 这个方法在实际应用中,springboot会通过在配置文件application.xml
* 中加配置自动实例化JavaMailSenderImpl。
* 这里只是手动把信息写入JavaMailSenderImpl中。
*/
public static JavaMailSenderImpl initJavaMailSender() {
// 以下配置信息具体作用请自行百度
Properties properties = new Properties();
properties.setProperty("mail.debug", "true");// 是否显示调试信息(可选)
properties.setProperty("mail.smtp.starttls.enable", "false");
properties.setProperty("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
properties.setProperty("mail.smtp.auth", "true");
properties.setProperty("mail.smtp.starttls.required", "true");
properties.put(" mail.smtp.timeout ", " 25000 ");
// 发送邮件配置
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
javaMailSender.setJavaMailProperties(properties);
javaMailSender.setHost("网易:smtp.ym.163.com,QQ:smtp.qq.com");
javaMailSender.setUsername("发送者邮箱");
javaMailSender.setPassword("邮箱密码,个人QQ则是开通smtp给的验证码");
javaMailSender.setPort(465);
javaMailSender.setDefaultEncoding("UTF-8");return javaMailSender;
}
}
模版
<html>
<body>
<h3>你好, ${username}, 这是一封模板邮件!</h3>
</body>
</html>