java-mail
来源:互联网 发布:百鸟朝凤 知乎 编辑:程序博客网 时间:2024/06/08 02:46
springboot + maven + mail
springboot + maven + mail 发送邮件
- springboot 使用yml配置文件 代替 properties文件
- maven 依赖
- 调用springframework相关方法代码
- 自定义bean 覆盖
配置文件 yml 注意缩进
mymail: host: smtp.126.com port: 25 username: *********@126.com password: **** simplemsg: from: ******@126.com subject: ****** freemarker: templateLoaderPath: classpath:freemarker locale: zh_CN default_encoding: UTF-8
快捷键
- 加粗
Ctrl + B
- 斜体
Ctrl + I
- 引用
Ctrl + Q
- 插入链接
Ctrl + L
- 插入代码
Ctrl + K
- 插入图片
Ctrl + G
- 提升标题
Ctrl + H
- 有序列表
Ctrl + O
- 无序列表
Ctrl + U
- 横线
Ctrl + R
- 撤销
Ctrl + Z
- 重做
Ctrl + Y
相关maven依赖
<dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.6.0</version> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.20</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.1.9.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
代码
MyJavaMailSender.java
主要配置com.mob.dispatcher.config.javamail的相关参数,也可以使用xml进行配置
package com.mob.dispatcher.config.javamail;import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.cloud.context.config.annotation.RefreshScope;import org.springframework.context.annotation.Bean;import org.springframework.mail.javamail.JavaMailSenderImpl;import org.springframework.stereotype.Component;import java.util.Properties;/** * Created by sixm on 2017/11/2. */@Data@RefreshScope@ConfigurationProperties( prefix = "mymail")@Componentpublic class MyJavaMailSender {// @Value("${mail.host}") private String host;// @Value("${mail.port}") private int port;// @Value("${mail.username}") private String username;// @Value("${mail.password}") private String password; @Bean public JavaMailSenderImpl getJavaMailSenderImpl() { JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl(); javaMailSender.setHost(host); javaMailSender.setPort(port); javaMailSender.setUsername(username); javaMailSender.setPassword(password); Properties javaMailProperties = new Properties(); javaMailProperties.setProperty("mail.smtp.auth", "true"); javaMailSender.setJavaMailProperties(javaMailProperties); return javaMailSender; }}
MyFreeMarkerConfigurer
(org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;)
package com.mob.dispatcher.config.javamail;import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Bean;import org.springframework.stereotype.Component;import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;import java.util.Properties;/** * Created by sixm on 2017/11/2. */@Data@ConfigurationProperties( prefix = "mymail.freemarker")@Componentpublic class MyFreeMarkerConfigurer { private String templateLoaderPath; private String locale; private String default_encoding; @Bean public FreeMarkerConfigurer getFreeMarkerConfigurer() { FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer(); Properties properties = new Properties(); properties.setProperty("locale", locale); properties.setProperty("default_encoding", default_encoding); freeMarkerConfigurer.setFreemarkerSettings(properties); return freeMarkerConfigurer; }}
MySimpleMailMessage
(org.springframework.mail.SimpleMailMessage;)
package com.mob.dispatcher.config.javamail;import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.cloud.context.config.annotation.RefreshScope;import org.springframework.context.annotation.Bean;import org.springframework.mail.SimpleMailMessage;import org.springframework.stereotype.Component;/** * Created by sixm on 2017/11/2. */@RefreshScope@ConfigurationProperties( prefix = "mymail.simplemsg")@Data@Componentpublic class MySimpleMailMessage { private String from; private String subject; @Bean public SimpleMailMessage getSimpleMailMessage() { SimpleMailMessage simpleMailMessage = new SimpleMailMessage(); simpleMailMessage.setSubject(subject); simpleMailMessage.setFrom(from); return simpleMailMessage; }}
发送邮件类MailSender
package com.mob.dispatcher.config.javamail;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.mail.SimpleMailMessage;import org.springframework.mail.javamail.JavaMailSender;import org.springframework.mail.javamail.MimeMessageHelper;import org.springframework.stereotype.Component;import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;import freemarker.template.Template;import javax.mail.internet.MimeMessage;import java.util.HashMap;import java.util.Map;/** * Created by sixm on 2017/11/2. */@Componentpublic class MailSender { @Autowired private JavaMailSender javaMailSender; @Autowired private SimpleMailMessage simpleMailMessage; @Autowired private FreeMarkerConfigurer freeMarkerConfigurer; /** * * @Description: 从模板中构建邮件内容 * @param nickName 用户昵称 * @param content 邮件内容 * @param email 接受邮件 * * Created by sixm on 2017/11/2. */ public void send(String nickName, String content, String email) { String to = email; String text = ""; Map<String, String> map = new HashMap<String, String>(1); map.put("nickName", nickName); map.put("content", content); try { // 根据模板内容,动态把map中的数据填充进去,生成HTML Template template = freeMarkerConfigurer.getConfiguration().getTemplate("mail.ftl"); // map中的key,对应模板中的${key}表达式 text = FreeMarkerTemplateUtils.processTemplateIntoString(template, map); } catch (Exception e) { e.printStackTrace(); } sendMail(to, null, text); } /** * * @Description: 执行发送邮件 * @param to 收件人邮箱 * @param subject 邮件主题 * @param content 邮件内容 * *Created by sixm on 2017/11/2. */ public void sendMail(String to, String subject, String content) { try { MimeMessage message = javaMailSender.createMimeMessage(); MimeMessageHelper messageHelper = new MimeMessageHelper(message, true, "UTF-8"); messageHelper.setFrom(simpleMailMessage.getFrom()); if (subject != null) { messageHelper.setSubject(subject); } else { messageHelper.setSubject(simpleMailMessage.getSubject()); } messageHelper.setTo(to); messageHelper.setText(content, true); javaMailSender.send(message); } catch (Exception e) { e.printStackTrace(); } }}
发送模版 mail.ftl
文件位置:resourse.freemarket.mail.ftl.
文件位置要和配置文件相对应
可以根据不同的场景,配置不同的模版并指定即可。
<h2><font color="green">${nickName}</font></h2><p>${content}</p>
调用@Test
import com.mob.dispatcher.MobDispatcherApplication;import com.mob.dispatcher.config.javamail.MailSender;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;/** * Created by sixm on 2017/11/2. */@RunWith(SpringRunner.class)@SpringBootTest(classes = MobDispatcherApplication.class)public class MailTest { @Autowired private MailSender mailSender; @Test public void sendMail(){ mailSender.sendMail("******@qq.com","周末聚合","米其林"); }}
注意:
部分有将服务器比如126 、 163等,会讲重复度高、有特殊字符的邮件当作垃圾邮件,并拦截。
根据返回代码可以参考: 网易退信链接
阅读全文
0 0
- JAVA MAIL
- java mail
- java mail
- java mail
- java mail
- Java Mail
- JAVA MAIL
- java mail
- Java mail
- Java Mail
- java mail
- java mail
- java Mail
- java mail
- java mail
- Java Mail
- java mail
- java mail
- 遇到的问题---MongoDB的java驱动的坑---启用副本集后id的update无效
- Java数据类型和MySql数据类型对应表
- 人工智能语聊的相关原理学习(二)
- 种一棵顺序存储的二叉树
- Python数据科学Jupyter-Matplotlib-Numpy-Keras-Pandas速查
- java-mail
- Inno Setup入门(十六)——Inno Setup类参考(2)
- 10.28/29作业
- linux学习第十六篇:LVM,磁盘故障小案例
- 日期控件的使用
- 人工智障学习笔记——机器学习(2)线性模型
- springboot搭建和开发(上)
- Struts2拦截器原理以及实例
- 开放端口的设备上传播病毒