給多個人傳送帶多附件郵件demo
package cn.zfs.commons.utils;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
/**
* Java Mail 工具類
*
* @author XueQi
* @version 1.0
*
*/
public class SendMail {
private static String host;
private static String username;
private static String password;
private static String from;
private static String nick;
static {
try {
// Test Data
host = "smtp.sports.cn";//smtp協議
username = "12*****
password = "**********";//郵箱密碼
from = "****@sports.cn";
nick = "管理員";
// nick + from 組成郵箱的發件人資訊
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 傳送郵件
*
* @param to
* 收件人列表,以","分割
* @param subject
* 標題
* @param body
* 內容
* @param filepath
* 附件列表,無附件傳遞null
* @return
* @throws MessagingException
* @throws AddressException
* @throws UnsupportedEncodingException
*/
public static boolean sendMail(String to, String subject, String body,
List<String> filepath) throws AddressException, MessagingException,
UnsupportedEncodingException {
// 引數修飾
if (body == null) {
body = "";
}
if (subject == null) {
subject = "無主題";
}
// 建立Properties物件
Properties props = System.getProperties();
// 建立信件伺服器
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true"); // 通過驗證
// 得到預設的對話物件
Session session = Session.getDefaultInstance(props, null);
// 建立一個訊息,並初始化該訊息的各項元素
MimeMessage msg = new MimeMessage(session);
nick = MimeUtility.encodeText(nick);
msg.setFrom(new InternetAddress(nick + "<" + from + ">"));
// 建立收件人列表
if (to != null && to.trim().length() > 0) {
String[] arr = to.split(",");
int receiverCount = arr.length;
if (receiverCount > 0) {
InternetAddress[] address = new InternetAddress[receiverCount];
for (int i = 0; i < receiverCount; i++) {
address[i] = new InternetAddress(arr[i]);
}
msg.addRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject);
// 後面的BodyPart將加入到此處建立的Multipart中
Multipart mp = new MimeMultipart();
// 附件操作
if (filepath != null && filepath.size() > 0) {
for (String filename : filepath) {
MimeBodyPart mbp = new MimeBodyPart();
// 得到資料來源
FileDataSource fds = new FileDataSource(filename);
// 得到附件本身並至入BodyPart
mbp.setDataHandler(new DataHandler(fds));
// 得到檔名同樣至入BodyPart
mbp.setFileName(new String(fds.getName().getBytes("gb2312"),"ISO8859-1"));
mp.addBodyPart(mbp);
}
MimeBodyPart mbp = new MimeBodyPart();
mbp.setText(body);
mp.addBodyPart(mbp);
// 移走集合中的所有元素
filepath.clear();
// Multipart加入到信件
msg.setContent(mp);
} else {
// 設定郵件正文
msg.setText(body);
}
// 設定信件頭的傳送日期
msg.setSentDate(new Date());
msg.saveChanges();
// 傳送信件
Transport transport = session.getTransport("smtp");
transport.connect(host, username, password);
transport.sendMessage(msg,
msg.getRecipients(Message.RecipientType.TO));
transport.close();
return true;
} else {
System.out.println("None receiver!");
return false;
}
} else {
System.out.println("None receiver!");
return false;
}
}
public static void main(String[] args) throws AddressException,
UnsupportedEncodingException, MessagingException {
List<String> filepath = new ArrayList<>();
filepath.add("C:\\網上申報系統修改~2018-7-30.doc");
filepath.add(" ");
sendMail("12*****
filepath);
}
}