【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
**开源地址:https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB **
}
public void setSenderName(String senderName) {
this.senderName = senderName;
}
@Override
public String toString() {
return “MailProperties{” +
“host='” + host + ‘’’ +
“, username='” + username + ‘’’ +
“, password='” + password + ‘’’ +
“, senderName='” + senderName + ‘’’ +
‘}’;
}
}
}
3.发送邮件方法
@Autowired
private EmailConfig emailConfig;
private final List senderList;
/**
-
获取MailSender
-
@return CustomMailSender
*/
public JavaMailSenderImpl getJavaMailSender(String username) {
Map<String, EmailConfig.MailProperties> mailConfigs=emailConfig.getConfigs();
log.info(“初始化mailSender,mailConfigs={}”,mailConfigs);
for (EmailConfig.MailProperties mailProperties : mailConfigs.values()) {
log.info(“mailConfigs.values(),mailProperties={}”,mailProperties);
// 邮件发送者
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
javaMailSender.setHost(mailProperties.getHost());
//5、SMTP服务器: 默认端口 换成腾讯云服务器后,需要将端口换成465
javaMailSender.setPort(25);
//6、//发送邮件协议名称
javaMailSender.setProtocol(“smtp”);
//7、编码格式
javaMailSender.setDefaultEncoding(“UTF-8”);
javaMailSender.setUsername(mailProperties.getUsername());
javaMailSender.setPassword(mailProperties.getPassword());
//8、创建连接对象,连接到邮箱服务器
Properties properties = new Properties();
//发送服务器需要身份验证,要采用指定用户名密码的方式去认证
properties.put(“mail.smtp.auth”, true);
properties.put(“mail.smtp.starttls.enable”, true);
//9、添加连接对象到邮件对象中
javaMailSender.setJavaMailProperties(properties);
// 添加数据
senderList.add(javaMailSender);
}
if (StringUtil.isNull(username)) {
throw new MyException(ExceptionEnum.EMAIL_ERROR_TYPE);
}
if (senderList.isEmpty()) {
throw new MyException(ExceptionEnum.EMAIL_ERROR_TYPE);
}
for (JavaMailSenderImpl javaMailSender : senderList) {
if (username.equals(javaMailSender.getUsername())) {
return javaMailSender;
}
}
// 随机返回一个JavaMailSender
return senderList.get(new Random().nextInt(senderList.size()));
}
/**
-
发送邮件的方法
-
@Param to :给谁发邮件
-
@Param code : 邮件的激活码
-
@Param subject : 主题
-
@Param text : 内容
*/
public void sendMail(String username, String toEmail, String code, final String subject, final String text) {
try {
JavaMailSenderImpl javaMailSender = getJavaMailSender(username);
int count = 1;
//10、创建
//可以发送几封邮件:可以这里 for循环多次
MimeMessage mimeMessage = getMimeMessage(username, toEmail, subject, text, javaMailSender);
//11、发送邮件
javaMailSender.send(mimeMessage);
log.info(“发送 第” + count + “封邮件”);
count++;
log.info(“发往 " + toEmail + " 邮件发送成功”);
} catch (MessagingException e) {
log.error(“发往 " + toEmail + " 邮件发送异常”, e);
}
}
//声明一个Message对象(代表一封邮件),从session中创建
private MimeMessage getMimeMessage(String username, String toEmail, String subject, String text, JavaMailSenderImpl javaMailSender) throws MessagingException {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, “UTF-8”);
//发件人
mimeMessageHelper.setFrom(username);
//收件人 : 可以发送给多个收件人,该方法有一个重载的 数组形参
mimeMessageHelper.setTo(toEmail);
//邮件主题
mimeMessageHelper.setSubject(subject);
//邮件内容
mimeMessageHelper.setText(text, true);
return mimeMessage;
}