首页 > 代码库 > springBoot(18):多账号轮询发送邮件
springBoot(18):多账号轮询发送邮件
一、添加依赖
<!-- mail --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
二、配置application.properties文件
#############################mail配置############################# spring.mail.host: smtp.163.com,smtp.mxhichina.com spring.mail.username:liuy930723@163.com,liuy@dadaisen.com spring.mail.password:123456geren,ASDasd123 spring.mail.properties.mail.smtp.auth: true
三、实现发送功能
MailConfiguration.javapackage com.example.demo.config; import java.util.ArrayList; import java.util.Map; import java.util.Properties; import javax.mail.internet.MimeMessage; import org.springframework.boot.autoconfigure.mail.MailProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Configuration; import org.springframework.mail.MailException; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.JavaMailSenderImpl; /** * 实现多账号,轮询发送 * * @Author: 我爱大金子 * @Description: 实现多账号,轮询发送 * @Date: Create in 16:07 2017/7/4 */ @Configuration @EnableConfigurationProperties(MailProperties.class) public class MailConfiguration extends JavaMailSenderImpl implements JavaMailSender { private ArrayList<String> usernameList; private ArrayList<String> passwordList; private ArrayList<String> hostList; private int currentMailId = 0; private final MailProperties properties; public MailConfiguration(MailProperties properties) { this.properties = properties; // 初始化邮件服务器 if (hostList == null) hostList = new ArrayList<String>(); String[] hosts = this.properties.getHost().split(","); if (hosts != null) { for (String host : hosts) { hostList.add(host); } } // 初始化账号 if (usernameList == null) usernameList = new ArrayList<String>(); String[] userNames = this.properties.getUsername().split(","); if (userNames != null) { for (String user : userNames) { usernameList.add(user); } } // 初始化密码 if (passwordList == null) passwordList = new ArrayList<String>(); String[] passwords = this.properties.getPassword().split(","); if (passwords != null) { for (String pw : passwords) { passwordList.add(pw); } } } @Override protected void doSend(MimeMessage[] mimeMessage, Object[] object) throws MailException { super.setUsername(usernameList.get(currentMailId)); super.setPassword(passwordList.get(currentMailId)); super.setHost(hostList.get(currentMailId)); // 设置编码和各种参数 super.setDefaultEncoding(this.properties.getDefaultEncoding().name()); super.setJavaMailProperties(asProperties(this.properties.getProperties())); super.doSend(mimeMessage, object); // 轮询 currentMailId = (currentMailId + 1) % usernameList.size(); } private Properties asProperties(Map<String, String> source) { Properties properties = new Properties(); properties.putAll(source); return properties; } @Override public String getUsername() { return usernameList.get(currentMailId); } }MailComponent.java
package com.example.demo.utils.component; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.HashMap; import java.util.Map; import javax.mail.MessagingException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import com.example.demo.config.MailConfiguration; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Component; /** * 邮件发送 * * @Author: 我爱大金子 * @Description: 实邮件发送 * @Date: Create in 16:07 2017/7/4 */ @Component public class MailComponent { private static final String template = "mail/roncoo.ftl"; @Autowired private ThymeleafAutoConfiguration thymeleafAutoConfiguration; @Autowired private MailConfiguration mailConfiguration; /** * 发送邮件 * @Author: 我爱大金子 * @Description: 发送邮件 * @Date: 16:46 2017/7/4 * @param to 接收人 * @param text 发送内容 */ public void sendMail(String to, String text) { Map<String, Object> map = new HashMap<String, Object>(); map.put("email", to); try { send(to, text); } catch (IOException e) { e.printStackTrace(); } catch (MessagingException e ) { e.printStackTrace(); } } private String send(String email, String text) throws MessagingException, UnsupportedEncodingException { MimeMessage message = mailConfiguration.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8"); InternetAddress from = new InternetAddress(); from.setAddress(mailConfiguration.getUsername()); from.setPersonal("我爱大金子", "UTF-8"); helper.setFrom(from); helper.setTo(email); helper.setSubject("测试邮件"); helper.setText(text, true); mailConfiguration.send(message); return text; } }
四、测试
package com.example.demo; import com.example.demo.utils.component.MailComponent; 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; @RunWith(SpringRunner.class) @SpringBootTest public class SpringBootEmailsApplicationTests { @Autowired private MailComponent mailComponent; @Test public void contextLoads() { mailComponent.sendMail("a1754966750@qq.com", "测试第1次"); } }
效果:
本文出自 “我爱大金子” 博客,请务必保留此出处http://1754966750.blog.51cto.com/7455444/1944506
springBoot(18):多账号轮询发送邮件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。