版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/will4906/article/details/73723774
使用环境
准备工作
- 使用maven将spring、mybatis、mysql、java mail所需要的包导入,具体导入的包见demo的pom.xml
- 申请一个邮箱账号(若有则跳过)
- 对于qq邮箱,需要申请授权码,路径:设置->账户->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务->开启POP3/SMTP服务
- 在mysql中新建表user,并将想要发送的邮箱参数填入,表格式如下
id name
基础配置
spring、mybatis
详细配置见demo
java mail
使用@PropertySource和@Value将mail.properties的内容读取出来。
@Configuration @PropertySource("mail.properties") public class MailConfig { @Value("${mail.host}") private String mailHost; @Value("${mail.port}") private int mailPort; @Value("${mail.username}") private String username; @Value("${mail.password}") private String password; @Value("${mail.auth}") private String auth; @Value("${mail.timeout}") private String time0ut; @Value("${mail.starttls.enable}") private String starttlsEnable; @Value("${mail.socketFactory.fallback}") private String socketFactoryFallback; @Value("${mail.socketFactory.class}") private String socketFactoryClass; ......
将上面读取的内容添加到mailsender中进行配置
@Bean public MailSender mailSender(Environment env){ JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); mailSender.setHost(mailHost); mailSender.setPort(Integer.valueOf(mailPort)); mailSender.setUsername(username); mailSender.setPassword(password); mailSender.setDefaultEncoding("utf-8"); Properties jpro = new Properties(); jpro.setProperty("mail.smtp.auth", auth); jpro.setProperty("mail.smtp.timeout", time0ut); jpro.setProperty("mail.smtp.starttls.enable", starttlsEnable); jpro.setProperty("mail.smtp.socketFactory.port", String.valueOf(mailPort)); jpro.setProperty("mail.smtp.socketFactory.fallback", socketFactoryFallback); jpro.setProperty("mail.smtp.socketFactory.class", socketFactoryClass); mailSender.setJavaMailProperties(jpro); return mailSender; }
这样java mail的基础配置就基本完成
发送邮件
目标是发送基于html的邮件,这样我们可以定制出各种各样的新鲜样式
读取html文件
为了方便笔者直接使用了apache的commons-io读取文件内容String text = ""; File file = ResourceUtils.getFile("classpath:mail.html"); text = FileUtils.readFileToString(file, "utf-8");
读取数据库用户列表
使用mybatis读取mysql中的email列表实现群发功能,具体操作见demo
创建邮件
邮件至少由4个部分组成,分别是发送者,接受者,邮件名称,内容,可用以下参数配置MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true, "utf-8"); helper.setFrom(mailUserName); helper.setTo(email); helper.setSubject("DEMO"); helper.setText(text, true); //true可以显示html格式的文本
- 发送邮件
最后使用mailSender.send(message);
发送邮件即可。
源码下载
- csdn: http://download.csdn.net/detail/will4906/9880292
- github: https://github.com/will4906/MailGroup
赞赏
赞赏 | |
微信 | 支付宝 |