一个使用Javax的发送邮件的实现模板
@Service
public class MailSender implements InitializingBean {
private static final Logger logger = LoggerFactory.getLogger(MailSender.class);
private JavaMailSenderImpl mailSender;
@Autowired
private VelocityEngine velocityEngine;
public boolean sendWithHTMLTemplate(String to, String subject,
String template, Map<String, Object> model) {
try {
String nick = MimeUtility.encodeText("牛客中级课");
InternetAddress from = new InternetAddress(nick + "<course@nowcoder.com>");
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage);
String result = VelocityEngineUtils
.mergeTemplateIntoString(velocityEngine, template, "UTF-8", model);
//to = "XXXXX@qq.com"
mimeMessageHelper.setTo(to);
//from = "XXX@qq.com"
mimeMessageHelper.setFrom(from);
// Subject: 邮件主题
mimeMessageHelper.setSubject(subject);
//文本
mimeMessageHelper.setText(result, true);
mailSender.send(mimeMessage);
return true;
} catch (Exception e) {
logger.error("发送邮件失败" + e.getMessage());
return false;
}
}
@Override
public void afterPropertiesSet() throws Exception {
mailSender = new JavaMailSenderImpl();
mailSender.setUsername("course@nowcoder.com");
mailSender.setPassword("NKnk66");
mailSender.setHost("smtp.exmail.qq.com");
mailSender.setPort(465);
mailSender.setProtocol("smtps");
mailSender.setDefaultEncoding("utf8");
Properties javaMailProperties = new Properties();
javaMailProperties.put("mail.smtp.ssl.enable", true);
mailSender.setJavaMailProperties(javaMailProperties);
}
}
使用方法:
@Override
public void doHandle(EventModel model) {
// 判断是否有异常登陆
Message message = new Message();
message.setToId(model.getActorId());
message.setContent("你上次的登陆ip异常");
message.setFromId(3);
message.setCreatedDate(new Date());
messageService.addMessage(message);
Map<String, Object> map = new HashMap<String, Object>();
map.put("username", model.getExt("username"));
mailSender.sendWithHTMLTemplate(model.getExt("email"), "登陆异常", "mails/welcome.html",
map);
}