使用JavaMailSender实现
添加依赖
<!--mail--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
配置文件
#邮件发送 Spring: mail: host: smtp.163.com username: ****@163.com password: **** default-encoding: UTF-8 smtp: auth: true starttls: enable: true required: true
host 为邮箱的smtp地址 若使用qq邮箱 则换成smtp.qq.com 使用别的邮箱可自行百度
username 是邮箱账号
password 是授权号 如我用的163邮箱 就去邮箱官网 设置--》授权即可,不同邮箱可能不同,总之不要填成你的密码就好
为了便于传参和严谨,我自己创建了一个Entity实体类用来传参
public class MailEntity { private String email; private String subject; private String content; private String template; private Map<String,Object> priMap; private String to; private String from;
省略了get set方法
然后创建一个Util类,便于以后搭建项目直接调用。
package com.learn.paomo.util; import com.learn.paomo.entity.MailEntity; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import javax.annotation.Resource; @Component public class SendMailUtil { @Resource private JavaMailSender mailSender; private static JavaMailSender mailSender1; @PostConstruct public void init(){ this.mailSender1=mailSender; } /* @Value("${spring.mail.username}") private static String from;*/ /*发送纯文本邮件*/ public static String sendText(MailEntity mail){ try { SimpleMailMessage message = new SimpleMailMessage(); message.setFrom("****@163.com"); message.setTo(mail.getTo()); message.setSubject(mail.getSubject()); message.setText(mail.getContent()); mailSender1.send(message); return "邮件发送成功"; }catch(Exception e){ return "邮件发送失败,原因:"+e.getMessage(); } } }
由于是写了util类,便于直接调用将属性写成了static的方法,所以方法前面的属性定义有所变化。如果是静态属性不能用@Autowired,会发现注入不进来,那如果不用静态下面方法又不能引用。所以用到了上述赋值方法。
controller类测试:
package com.learn.paomo.controller; import com.learn.paomo.entity.MailEntity; import com.learn.paomo.util.SendMailUtil; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/mail") public class SendMailController { @RequestMapping("/sendmail") public Object sendemail() throws Exception{ MailEntity mail=new MailEntity(); mail.setTo("****@qq.com"); mail.setSubject("测试标题"); mail.setContent("测试内容"); String status=SendMailUtil.sendText(mail); return status; } }
用自己的QQ邮箱进行了一下收件测试
不方便截图。这里就当是测试成功了吧。
下一篇准备结合FreeMarker进行下邮件模板的编写,以及邮件发送图片表格等……ojbk!