Skip to content

Commit 0bd9f3e

Browse files
committed
add commons-email
1 parent f9d0d60 commit 0bd9f3e

File tree

7 files changed

+242
-1
lines changed

7 files changed

+242
-1
lines changed

pom.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,13 @@
113113
<version>4.2</version>
114114
</dependency>
115115

116+
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-email -->
117+
<dependency>
118+
<groupId>org.apache.commons</groupId>
119+
<artifactId>commons-email</artifactId>
120+
<version>1.5</version>
121+
</dependency>
122+
116123
</dependencies>
117124

118125
<build>
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.coderdream.util.mail;
2+
3+
import org.apache.commons.mail.DefaultAuthenticator;
4+
import org.apache.commons.mail.Email;
5+
import org.apache.commons.mail.EmailException;
6+
import org.apache.commons.mail.SimpleEmail;
7+
8+
/**
9+
* http://commons.apache.org/proper/commons-email/userguide.html
10+
*
11+
* @author CoderDream
12+
*
13+
*/
14+
public class CommonsMailUtil {
15+
16+
private String host = ConfigLoader.getServer();
17+
private String from = ConfigLoader.getSender();
18+
private String username = ConfigLoader.getUsername();
19+
private String password = ConfigLoader.getPassword();
20+
private String nickname = ConfigLoader.getNickname();
21+
22+
private String mailto = ConfigLoader.getMailto();
23+
24+
public void sendSimpleTextEmail() {
25+
Email email = new SimpleEmail();
26+
email.setHostName(host);
27+
email.setSmtpPort(25);
28+
email.setAuthenticator(new DefaultAuthenticator(username, password));
29+
email.setSSLOnConnect(false);
30+
try {
31+
email.setFrom(from);
32+
email.setSubject("SimpleTextMail");
33+
email.setMsg("SimpleTextMail");
34+
email.addTo(mailto);
35+
email.send();
36+
} catch (EmailException e) {
37+
e.printStackTrace();
38+
}
39+
}
40+
}

src/main/java/com/coderdream/util/mail/ConfigLoader.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ public class ConfigLoader {
2929
private static String password;
3030
// 发件人显示昵称
3131
private static String nickname;
32+
33+
// 收件人显示昵称
34+
private static String mailto;
35+
3236
static {
3337
// 类初始化后加载配置文件
3438
InputStream in = ConfigLoader.class.getClassLoader()
@@ -46,6 +50,7 @@ public class ConfigLoader {
4650
username = props.getProperty("mail.username");
4751
password = props.getProperty("mail.password");
4852
nickname = props.getProperty("mail.nickname");
53+
mailto = props.getProperty("mail.mailto");
4954
log.debug("load mail setting success,file path:" + mailPath);
5055
}
5156

@@ -73,4 +78,44 @@ public static void setMailPath(String mailPath) {
7378
ConfigLoader.mailPath = mailPath;
7479
}
7580

81+
public static Logger getLog() {
82+
return log;
83+
}
84+
85+
public static void setLog(Logger log) {
86+
ConfigLoader.log = log;
87+
}
88+
89+
public static String getMailto() {
90+
return mailto;
91+
}
92+
93+
public static void setMailto(String mailto) {
94+
ConfigLoader.mailto = mailto;
95+
}
96+
97+
public static String getMailPath() {
98+
return mailPath;
99+
}
100+
101+
public static void setServer(String server) {
102+
ConfigLoader.server = server;
103+
}
104+
105+
public static void setSender(String sender) {
106+
ConfigLoader.sender = sender;
107+
}
108+
109+
public static void setUsername(String username) {
110+
ConfigLoader.username = username;
111+
}
112+
113+
public static void setPassword(String password) {
114+
ConfigLoader.password = password;
115+
}
116+
117+
public static void setNickname(String nickname) {
118+
ConfigLoader.nickname = nickname;
119+
}
120+
76121
}
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
package com.coderdream.util.mail;
2+
3+
import org.apache.commons.mail.HtmlEmail;
4+
5+
import java.util.Properties;
6+
7+
import javax.activation.DataHandler;
8+
import javax.activation.DataSource;
9+
import javax.activation.FileDataSource;
10+
import javax.mail.BodyPart;
11+
import javax.mail.Message;
12+
import javax.mail.MessagingException;
13+
import javax.mail.Multipart;
14+
import javax.mail.PasswordAuthentication;
15+
import javax.mail.Session;
16+
import javax.mail.Transport;
17+
import javax.mail.internet.AddressException;
18+
import javax.mail.internet.InternetAddress;
19+
import javax.mail.internet.MimeBodyPart;
20+
import javax.mail.internet.MimeMessage;
21+
import javax.mail.internet.MimeMultipart;
22+
23+
public class EmailHelper {
24+
25+
private String host;
26+
private String username;
27+
private String password;
28+
private String from;
29+
30+
private String to;
31+
private String subject;
32+
private String htmlContent;
33+
private String imagePath;
34+
35+
public EmailHelper(String host, String username, String password, String from) throws AddressException, MessagingException{
36+
this.host = host;
37+
this.username = username;
38+
this.password = password;
39+
this.from = from;
40+
}
41+
42+
public void sendWithImage() throws Exception {
43+
44+
Properties props = new Properties();
45+
props.put("mail.smtp.auth", "true");
46+
props.put("mail.smtp.host", host);
47+
48+
final String username1 = username;
49+
final String password1 = password;
50+
51+
Session session = Session.getInstance(props, new javax.mail.Authenticator() {
52+
protected PasswordAuthentication getPasswordAuthentication() {
53+
return new PasswordAuthentication(username1, password1);
54+
}
55+
});
56+
57+
Message message = new MimeMessage(session);
58+
message.setFrom(new InternetAddress(from));
59+
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
60+
message.setSubject(subject);
61+
Multipart multipart = new MimeMultipart("related");
62+
63+
System.out.println(" html ");
64+
BodyPart htmlPart = new MimeBodyPart();
65+
htmlContent = "<img src=\"cid:image\">" + htmlContent;
66+
htmlPart.setContent(htmlContent, "text/html");
67+
multipart.addBodyPart(htmlPart);
68+
69+
System.out.println(" image ");
70+
System.out.println("image path : " + imagePath);
71+
BodyPart imgPart = new MimeBodyPart();
72+
DataSource fds = new FileDataSource(this.imagePath);
73+
74+
imgPart.setDataHandler(new DataHandler(fds));
75+
imgPart.setHeader("Content-ID", "<image>");
76+
77+
multipart.addBodyPart(imgPart);
78+
message.setContent(multipart);
79+
Transport.send(message);
80+
81+
System.out.println(" Sent -| ");
82+
}
83+
84+
public void setTo(String to) {
85+
this.to = to;
86+
}
87+
88+
public void setSubject(String subject) {
89+
this.subject = subject;
90+
}
91+
92+
public void setHtmlContent(String htmlContent) {
93+
this.htmlContent = htmlContent;
94+
}
95+
96+
public String getImagePath() {
97+
return imagePath;
98+
}
99+
100+
public void setImagePath(String imagePath) {
101+
this.imagePath = imagePath;
102+
}
103+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.coderdream.util.mail;
2+
3+
public class SendEmailDemo {
4+
5+
public static void main(String[] args) {
6+
7+
String host = ConfigLoader.getServer();
8+
String from = ConfigLoader.getSender();
9+
String username = ConfigLoader.getUsername();
10+
String password = ConfigLoader.getPassword();
11+
String nickname = ConfigLoader.getNickname();
12+
13+
String to = "xulin.wh@qq.com";// use your reciever email address
14+
try {
15+
EmailHelper emailHelper = new EmailHelper(host, username, password, from);
16+
emailHelper.setTo(to);
17+
emailHelper.setSubject("subject ttt test");
18+
emailHelper.setHtmlContent("<h1> This is html </h1>");
19+
String path = System.getProperty("user.dir")
20+
+ "/snapshot/pa_test_case_0101_login.png";
21+
emailHelper.setImagePath(path);
22+
23+
emailHelper.sendWithImage();
24+
25+
} catch (Exception e) {
26+
e.printStackTrace();
27+
}
28+
}
29+
}

src/main/resources/mail/mail.properties

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@
1313
#mail sender settings
1414
# for example: smtp.sina.cn
1515
mail.server=smtp.126.com
16+
mail.port=25
1617
#the sender mail
1718
mail.sender=acoder@126.com
1819
#the sender nickname
19-
mail.nickname=\u79FB\u8054\u4F70\u6C47
20+
mail.nickname=acoder
2021
#sender mail username
2122
mail.username=acoder
2223
#sender mail password
2324
mail.password=Xulin201486
25+
mail.mailto=xulin.wh@qq.com
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.coderdream.util.mail;
2+
3+
import static org.junit.Assert.*;
4+
5+
import org.junit.Test;
6+
7+
public class CommonsMailUtilTest {
8+
9+
@Test
10+
public void testSendSimpleTextEmail() {
11+
CommonsMailUtil commonsMailUtil = new CommonsMailUtil();
12+
commonsMailUtil.sendSimpleTextEmail();
13+
}
14+
15+
}

0 commit comments

Comments
 (0)