步骤1:pom.xml添加依赖项2
3
4 javax.mail
5 mailapi
6 1.4.2
7
8
9
10 javax.mail
11 mail
12 1.4.2
13
步骤2:封装一个工具类(参考下面的代码)
注:BaseBean里其实没啥东西,就一个protected Logger logger,方便子类可以直接使用,大家参考时,可根据需要去掉BeseBean继承
1 package com.cnblogs.yjmyzz.utils;
2
3 import com.cnblogs.yjmyzz.domain.BaseBean;
4 import org.springframework.util.StringUtils;
5
6 import java.util.Properties;
7
8 import javax.mail.Message;
9 import javax.mail.MessagingException;
10 import javax.mail.Session;
11 import javax.mail.Transport;
12 import javax.mail.internet.InternetAddress;
13 import javax.mail.internet.MimeMessage;
14 import javax.mail.internet.MimeUtility;
15
16 /**
17 * 邮件发送工具类
18 */
19 public class MailUtil extends BaseBean {
20
21 private MimeMessage message;
22 private Session session;
23 private Transport transport;
24 private String smtpHost = "";
25 private int smtpPort = 25;
26 private String senderUserName = "";
27 private String senderPassword = "";
28
29 public MailUtil(Properties properties, boolean debug) {
30 this.smtpHost = properties.getProperty("mail.smtp.host");
31 this.smtpPort = Integer.parseInt(properties.getProperty("mail.smtp.port"));
32 this.senderUserName = properties.getProperty("mail.sender.username");
33 this.senderPassword = properties.getProperty("mail.sender.password");
34 session = Session.getInstance(properties);
35 session.setDebug(debug);//开启后有调试信息
36 message = new MimeMessage(session);
37 }
38
39 /**
40 * 发送邮件
41 *
42 * @param subject 邮件主题
43 * @param mailBody 邮件内容
44 * @param senderNickName 发件人NickName
45 * @param receiveUser 收件人地址
46 * @param ccReceiveUser 抄送地址
47 * @param bccReceiveUser 密送地址
48 */
49 public void sendEmail(String subject, String mailBody, String senderNickName,
50 String receiveUser, String ccReceiveUser, String bccReceiveUser, Boolean isHtmlFormat) {
51 try {
52 // 发件人
53 InternetAddress from = null;
54 if (StringUtils.isEmpty(senderNickName)) {
55 from = new InternetAddress(senderUserName);
56 } else {
57 from = new InternetAddress(MimeUtility.encodeWord(senderNickName) + " ");
58 }
59 message.setFrom(from);
60
61 // 收件人
62 InternetAddress to = new InternetAddress(receiveUser);
63 message.setRecipient(Message.RecipientType.TO, to);
64
65 //抄送人
66 if (!StringUtils.isEmpty(ccReceiveUser)) {
67 InternetAddress cc = new InternetAddress(ccReceiveUser);
68 message.setRecipient(Message.RecipientType.CC, cc);
69 }
70
71 //密送人
72 if (!StringUtils.isEmpty(bccReceiveUser)) {
73 InternetAddress bcc = new InternetAddress(bccReceiveUser);
74 message.setRecipient(Message.RecipientType.BCC, bcc);
75 }
76
77 message.setSubject(subject);
78 String content = mailBody.toString();
79
80 if (isHtmlFormat) {
81 message.setContent(content, "text/html;charset=UTF-8");
82 } else {
83 message.setContent(content, "text/plain;charset=UTF-8");
84 }
85 message.saveChanges();
86 transport = session.getTransport("smtp");
87 transport.connect(smtpHost, smtpPort, senderUserName, senderPassword);
88 transport.sendMessage(message, message.getAllRecipients());
89
90 logger.debug(senderUserName + " 向 " + receiveUser + " 发送邮件成功!");
91
92 } catch (Exception e) {
93 e.printStackTrace();
94 logger.error("sendEmail失败!", e);
95 } finally {
96 if (transport != null) {
97 try {
98 transport.close();
99 } catch (MessagingException e) {
100 e.printStackTrace();
101 logger.error("sendEmail->transport关闭失败!", e);
102 }
103 }
104 }
105 }
106
107 }
步骤3:配置
a) 属性文件mail.properties1 mail.smtp.host=smtp.qq.com
2 mail.smtp.port=25
3 mail.smtp.auth=true
4 mail.sender.username=xxx@qq.com
5 mail.sender.password=***
b) spring配置注入
1 <?xml version="1.0" encoding="UTF-8"?>
2
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
4 xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
5 xmlns:context="http://www.springframework.org/schema/context"
6 xsi:schemaLocation="
7 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
8 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
9 http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
10 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
11 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"
12 default-autowire="byName">
13
14
15 class="org.springframework.beans.factory.config.PropertiesFactoryBean">
16
17 value="classpath:mail.properties"/>
18
19
20
21
22
23
24
25
测试代码:
1 @Test
2 public void testSendMail() {
3 ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-context.xml");
4 MailUtil mailUtil = ctx.getBean(MailUtil.class);
5 mailUtil.sendEmail("骚年,崛起吧,人类需要你!", "骚年:
快去拯救地球吧!
", "菩提树上的杨过", "aaa@126.com", "bbb@infosky.com.cn", "ccc@sjtu.edu.cn", true);6 ((ClassPathXmlApplicationContext) ctx).close();
7 }