springboot 发送邮件
昨天学习了一个发送邮件的小例子。使用spring boot发送邮件。
环境:IDEA,Maven,thymeleaf
1.先看看效果
2.获得授权码(按以下链接的步骤来做)
https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256
最后可以得到
这个授权码记住,之后要用到
3.pom.xml
<!--邮件发送-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
4.application.properties
#邮箱服务器
spring.mail.host=smtp.qq.com
#发送方的邮箱
spring.mail.username=2284612137@qq.com
#发送方的授权码
spring.mail.password=aijnyrcdunwadibd
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
将上面发送方的邮箱改为你的邮箱,授权码改为之前获取到的
5.上代码
public class MailService {
//初始化Log4j的一个实例,让这个实例在以后的打印中,题头都带上你的类名
private final Logger logger = LoggerFactory.getLogger(this.getClass());
//提供给你的进行邮件发送的类
@Autowired
private JavaMailSender sender;
//获取你的邮箱账号
@Value("${spring.mail.username}")
private String from;
/*发送纯文本的简单邮件
* @Param to 收件人Email地址
* @Param from 发件人Email地址
* @Param content 邮件主题内容
* @Param subject 邮件主题
* */
public void sendSimpMail(String to ,String subject ,String content){
//设置邮件的信息
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from);
message.setTo(to);
message.setSubject(subject);
message.setText(content);
try{
//发送邮件
sender.send(message);
logger.info("简单邮件已经发送");
}catch(Exception e){
logger.error("发送邮件出现异常"+e);
}
}
//发送html格式的邮件
public void sendHtmlMail(String to ,String subject ,String content){
MimeMessage message = sender.createMimeMessage();
try{
//true表示需要创建一个multpart mesage
MimeMessageHelper helper = new MimeMessageHelper(message ,true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content ,true);
sender.send(message);
logger.info("html邮件已发送");
}catch (Exception e){
logger.error("发送html邮件出现异常"+e);
}
}
//发送附带的邮件
public void sendAttachmentsMail(String to ,String subject ,String content ,String filePath){
MimeMessage message = sender.createMimeMessage();
try{
//true表式需要创建一个multpart message
MimeMessageHelper helper = new MimeMessageHelper(message ,true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content ,true);
FileSystemResource file = new FileSystemResource(new File(filePath));
//获得文件的名字
String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
helper.addAttachment(fileName ,file);
sender.send(message);
logger.info("带附件的邮件已经发送");
}catch(Exception e){
logger.error("发送带附件的邮件出现异常"+e);
}
}
/*发送嵌入式静态资源(一般是图片)的邮件
* @param content 邮件内容,需要包括一个静态资源的id,比如<img src="/>
* @param rscPath 静态资源路径和文件名
* @param rscId 静态资源Id
* */
public void sendInlineResourceMail(String to ,String subject ,String content ,String rscPath ,String rscId){
MimeMessage message = sender.createMimeMessage();
try{
//true表示需要创建一个multipart message
MimeMessageHelper helper = new MimeMessageHelper(message ,true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content ,true);
FileSystemResource res = new FileSystemResource(new File(rscPath));
helper.addInline(rscId ,res);
sender.send(message);
logger.info("嵌入静态资源的邮件已经发送");
}catch (Exception e){
logger.error("发送嵌入式资源的邮件出现异常"+e);
}
}
我把注释写的很详细,应该能看懂。
6.调用
@Autowired
private MailService mailService;
//要发送给其他人的邮箱,我设置的还是我自己的。
private String to = "2284612137@qq.com";
mailService.sendSimpMail(to ,"主题:简单邮件","测试邮件内容");
// mailService.sendHtmlMail(to,"html邮件","内容");
// mailService.sendInlineResourceMail(to,"静态文件","内容");
// mailService.sendAttachmentsMail(to,"附带的邮件","内容","E:\\软考信息\\软考网站.txt");
7.附源码
//download.csdn.net/download/m0_45025658/12083331
到这里就结束了,如果有什么不懂的话就留言吧。