参考:https://www.jianshu.com/p/59d15b357201
1 添加mail依赖2 写配置文件application.propertiesorg.springframework.boot spring-boot-starter-mail2.5.7
#这里以QQ邮箱为例 #QQ邮箱服务器 spring.mail.host=smtp.qq.com #你的QQ邮箱账户 spring.mail.username=自己的QQ邮箱@qq.com #你的QQ邮箱第三方授权码 spring.mail.password=下文说怎么得到授权码 #编码类型 spring.mail.default-encoding=UTF-83 得到QQ邮箱第三方授权码
发送协议:SMTP
拉取协议:SMTP、POP3、HTTP
我们是要委托QQ邮箱发送激活邮件
写一个类,利用mail包里的JavaMailSender类委托QQ邮箱发邮件
注解@Component表示该类被Spring容器管理
注入JavaMailSender类
从配置文件里得到发件人
点进去看JavaMailSender类就是两个创建邮件方法和四个发送邮件方法
MimeMessageHelper也点进去瞄瞄,有什么方法
@Component public class MailClient { private static final Logger logger = LoggerFactory.getLogger(MailClient.class); @Autowired private JavaMailSender mailSender; @Value("${spring.mail.username}") private String from; public void sendMail(String to,String subject ,String content){ try { MimeMessage message = mailSender.createMimeMessage(); //message里面是空的,可以利用Helper类来往里面填内容 MimeMessageHelper helper = new MimeMessageHelper(message); helper.setSubject(subject); helper.setText(content,true); helper.setTo(to); helper.setFrom(from); mailSender.send(message); } catch (MessagingException e) { logger.error("邮箱发送失败!"+e.getMessage()); } } }5 测试 5.1 发送纯文本邮件
@RunWith(SpringRunner.class) @SpringBootTest @ContextConfiguration(classes = CommunityApplication.class) public class MailTests { @Autowired private MailClient mailClient; @Test public void testSendMail(){ mailClient.sendMail("[email protected]","hello","你好"); } }
我还寻思哪里错了呢咋没收到邮箱,一看好家伙给我放垃圾邮件里了。。。。
mailClient.sendMail("[email protected]","hello","你好");5.3 发送带附件
注意MimeMessageHelper的构造函数要多一个参数,表示该邮件由多个部分组成
try { MimeMessage message = mailSender.createMimeMessage(); //message里面是空的,可以利用Helper类来往里面填内容 MimeMessageHelper helper = new MimeMessageHelper(message,true); helper.setSubject(subject); helper.setText(content,true); helper.setTo(to); helper.setFrom(from); //FileSystemResource用于读取本地文件 FileSystemResource file = new FileSystemResource(filePath); String filename=file.getFilename(); helper.addAttachment(filename,file); mailSender.send(message); } catch (MessagingException e) { logger.error("邮箱发送失败!"+e.getMessage()); }
mailClient.sendMail("...","这是一个带附件的邮件","你好" ,"D:/test.txt");5.4 发送带图片的邮件
try { MimeMessage message = mailSender.createMimeMessage(); //message里面是空的,可以利用Helper类来往里面填内容 MimeMessageHelper helper = new MimeMessageHelper(message,true); helper.setSubject(subject); helper.setText(content,true); helper.setTo(to); helper.setFrom(from); //FileSystemResource用于读取本地文件 FileSystemResource file = new FileSystemResource(picPath); helper.addInline(picId,file); mailSender.send(message); } catch (MessagingException e) { logger.error("邮箱发送失败!"+e.getMessage()); }
String content = "图片:"; mailClient.sendMail("[email protected]","这是一个带图片的邮件",content ,"D:/test.png","001");5.5 发送动态模板邮件
这个发送邮件代码与5.2发送html邮件代码一致
test文件里导入模板引擎
要实例化thymeleaf包里的Context类,用这个类把参数传入动态模板
@Autowired private MailClient mailClient; @Autowired private TemplateEngine templateEngine; @Test public void testSendMail(){ Context context = new Context(); context.setVariable("username","uam"); String content = templateEngine.process("mail/demo", context); System.out.println(content); mailClient.sendMail("...","这是一个动态邮件",content); }
邮件 欢迎你,xxx!
控制台输出:
以后可以用IDEA给别人发邮件了耶!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)