一、前言
在日常系统开发工作中,我们有时会遇到发送邮件的需求,使用java来实现发送邮件功能轻而易举。
借助spring的JavaMailSenderImpl,以及mail jar包,很容易实现发送邮件功能。
二、依赖的jar包
相关jar包:添加pom.xml依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.1</version>
</dependency>
或者 直接下载jar包
三、设置或查看发送方邮箱的服务设置
例如,题主的126邮箱,host 是 smtp.126.com,端口号是 25
四、核心代码
@RequestMapping(value = "/sendMail", method = RequestMethod.POST) public String sendMail(HttpServletRequest request, HttpServletResponse response, MailVo mailVo) { //MailVo 包含 接收方的邮箱地址、邮件标题、邮件内容 if (null == mailVo) { request.setAttribute("errorMsg", "信息必须填写!"); return "htgl.mail.index"; } if (StringUtils.isBlank(mailVo.getToMail()) ) { request.setAttribute("errorMsg", "邮件地址必须填写!"); request.setAttribute("mailVo", mailVo); return "htgl.mail.index"; } if (StringUtils.isBlank(mailVo.getTitle())) { request.setAttribute("errorMsg", "邮件标题必须填写!"); request.setAttribute("mailVo", mailVo); return "htgl.mail.index"; } if (StringUtils.isBlank(mailVo.getContent())) { request.setAttribute("errorMsg", "邮件内容必须填写!"); request.setAttribute("mailVo", mailVo); return "htgl.mail.index"; } JavaMailSenderImpl sender = new JavaMailSenderImpl(); sender.setHost("smtp.126.com"); sender.setUsername("your mail");//发送方的邮箱,例如[email protected] sender.setPassword("your mail password");//发送方邮箱的密码 sender.setPort(25); Properties properties = new Properties(); properties.put("mail.smtp.auth", "smtp"); properties.put("mail.smtp.socketFactory.fallback", "false"); properties.put("mail.smtp.timeout", "25000"); sender.setJavaMailProperties(properties); MimeMessage mimeMessage = sender.createMimeMessage(); //可以对邮件内容加自定义样式,我这里没有加 String content_start = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf8\"/></head><body>"; String content_end = "</body></html>"; StringBuilder str = new StringBuilder(); str.append(content_start); str.append(mailVo.getContent()); str.append(content_end); String content = str.toString(); //mimeMessage.setContent(text, "text/html;charset=GB18030"); MimeMessageHelper helper; try { helper = new MimeMessageHelper(mimeMessage, true,"GBK"); helper.setFrom(sender.getUsername()); helper.setTo(mailVo.getToMail()); helper.setSubject(mailVo.getTitle()); helper.setText(content, true); sender.send(mimeMessage); } catch (MessagingException e1) { logger.info("发送邮件时,发送失败"); logger.info(e1.getMessage()); e1.printStackTrace(); request.setAttribute("result", "发送失败!"); return "htgl.mail.sendMail"; } request.setAttribute("result", "发送成功!"); return "htgl.mail.sendMail"; }
public class MailVo { private String toMail; private String title; private String content; public String getToMail() { return toMail; } public void setToMail(String toMail) { this.toMail = toMail; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } }