jar包:java
<!--發送郵件-->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.5.5</version>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.5.5</version>
</dependency>
EmailConfig:api
package com.bwie.utils;
import java.util.Properties;
import static com.bwie.utils.PropterUtil.getProperties;
public class EmailConfig {
private static EmailConfig email;
private String from;
private String user;
private String pwd;
private String host;
public static EmailConfig initConfig() {
if (email != null) {
return email;
} else {
Properties p = getProperties("properties/jdbc.properties","utf-8");
String from = p.getProperty("mail.smtp.from");
String user = p.getProperty("mail.smtp.user");
String pwd = p.getProperty("mail.smtp.pwd");
String host = p.getProperty("mail.smtp.host");
email = new EmailConfig(from,user,pwd,host);
return email;
}
}
public EmailConfig(String from, String user, String pwd, String host) {
this.from = from;
this.user = user;
this.pwd = pwd;
this.host = host;
}
public String getFrom() {
return from;
}
public String getUser() {
return user;
}
public String getPwd() {
return pwd;
}
public String getHost() {
return host;
}
public static EmailConfig getEmail() {
return email;
}
public static void setEmail(EmailConfig email) {
EmailConfig.email = email;
}
public void setFrom(String from) {
this.from = from;
}
public void setUser(String user) {
this.user = user;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public void setHost(String host) {
this.host = host;
}
@Override
public String toString() {
return "EmailConfig{" +
"from='" + from + '\'' +
", user='" + user + '\'' +
", pwd='" + pwd + '\'' +
", host='" + host + '\'' +
'}';
}
}
jdbc.properties:
mail.smtp.from=18333607118@163.com
mail.smtp.user=18333607118
mail.smtp.pwd=li201314
mail.smtp.host=smtp.163.com
SendEmailUtil:
package com.bwie.utils;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.util.ByteArrayDataSource;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
public class SendEmailUtil {
/**
* 發送郵件
*
* @param to
* @param title
* @param content
* @return
*/
public boolean sendEmail(String to, String title, String content) {
return send(to, title, content, null, null, null);
}
/**
* 發送帶附件的郵件
*
* @param to
* @param title
* @param content
* @param affixPath
* @param affixName
* @return
*/
public boolean sendEmail(String to, String title, String content, String affixPath, String affixName) {
return send(to, title, content, affixPath, affixName, null);
}
/**
* 發送帶附件的郵件,入參是文件流
*
* @param to
* @param title
* @param content
* @param inputStream
* @return
*/
public boolean sendEmail(String to, String title, String content, InputStream inputStream) {
return send(to, title, content, "", "", inputStream);
}
private boolean send(String to, String title, String content, String affixPath, String affixName, InputStream inputStream) {
Properties props = new Properties();
EmailConfig sendEmailUtil = EmailConfig.initConfig();
// 設置發送郵件的郵件服務器的屬性(這裏使用網易的smtp服務器)
//props.put("mail.smtp.host", this.host);
props.put("mail.smtp.host", sendEmailUtil.getHost());
// 須要通過受權,也就是有戶名和密碼的校驗,這樣才能經過驗證(必定要有這一條)
props.put("mail.smtp.auth", "true");
// 用剛剛設置好的props對象構建一個session
Session session = Session.getDefaultInstance(props);
// 有了這句即可以在發送郵件的過程當中在console處顯示過程信息,供調試使
// 用(你能夠在控制檯(console)上看到發送郵件的過程)
session.setDebug(false);
// 用session爲參數定義消息對象
MimeMessage message = new MimeMessage(session);
try {
// 加載發件人地址
message.setFrom(new InternetAddress(sendEmailUtil.getFrom()));
// 加載收件人地址
message.addRecipients(Message.RecipientType.TO, to);
List<InternetAddress> list = new ArrayList();//不能使用string類型的類型,這樣只能發送一個收件人
String[] median = to.split(",");//對輸入的多個郵件進行逗號分割
for (int i = 0; i < median.length; i++) {
list.add(new InternetAddress(median[i]));
}
InternetAddress[] address = (InternetAddress[]) list.toArray(new InternetAddress[list.size()]);
message.addRecipients(Message.RecipientType.TO, address);
// 加載標題
message.setSubject(title);
// 向multipart對象中添加郵件的各個部份內容,包括文本內容和附件
Multipart multipart = new MimeMultipart();
// 設置郵件的文本內容
BodyPart contentPart = new MimeBodyPart();
contentPart.setText(content);
multipart.addBodyPart(contentPart);
// 添加附件
BodyPart messageBodyPart = new MimeBodyPart();
if (affixPath != null && !"".equals(affixPath)) {
DataSource source = new FileDataSource(affixPath);
// 添加附件的內容
messageBodyPart.setDataHandler(new DataHandler(source));
// 添加附件的標題
// 這裏很重要,經過下面的Base64編碼的轉換能夠保證你的中文附件標題名在發送時不會變成亂碼
sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
messageBodyPart.setFileName("=?GBK?B?" + enc.encode(affixName.getBytes()) + "?=");
multipart.addBodyPart(messageBodyPart);
} else {
DataSource source = new ByteArrayDataSource(inputStream, "application/png");
messageBodyPart.setDataHandler(new DataHandler(source));
// 添加附件的標題
// 這裏很重要,經過下面的Base64編碼的轉換能夠保證你的中文附件標題名在發送時不會變成亂碼
sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
messageBodyPart.setFileName(new Date().getTime() + ".png");
multipart.addBodyPart(messageBodyPart);
}
// 將multipart對象放到message中
message.setContent(multipart);
// 保存郵件
message.saveChanges();
// 發送郵件
Transport transport = session.getTransport("smtp");
// 鏈接服務器的郵箱
transport.connect(sendEmailUtil.getHost(), sendEmailUtil.getUser(), sendEmailUtil.getPwd());
// 把郵件發送出去
transport.sendMessage(message, message.getAllRecipients());
transport.close();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
//測試發送郵件
public static void main(String[] args) throws Exception {
System.out.print("///////");
SendEmailUtil cn = new SendEmailUtil();
cn.sendEmail("1959241842@qq.com", "你幫我看看這張圖片啊", "幫我看下這個圖片,適合作頭像嗎", "f:\\1.png", "1.png"); }}