最近閑的沒事, 寫了個使用javaMail 發送郵件的小程序
1:新建maven 項目
2:導入jar包依賴
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.5.2</version>
</dependency>
3:直接貼代碼實現發送郵件了
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;
public class MailUtils {
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.163.com";
username = "郵箱賬號";
password = "郵箱密碼";
from = "郵箱賬號";
nick = "admin";
// nick + from 組成郵箱的發件人信息
} catch (Exception e) {
e.printStackTrace();
}
}
public static boolean sendMail(String to, String subject, String body,
List<String> filePath) throws UnsupportedEncodingException,
AddressException, MessagingException {
//
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);
// 得到附件本身
mbp.setDataHandler(new DataHandler(fds));
mp.addBodyPart(mbp);
}
MimeBodyPart mbp = new MimeBodyPart();
mbp.setText(body, "UTF-8");
mp.addBodyPart(mbp);
// 移走集合中的所有元素
filePath.clear();
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 {
return false;
}
}
public static void main(String[] args) throws AddressException,
UnsupportedEncodingException, MessagingException {
List<String> filepath = new ArrayList<String>();
filepath.add("F:/51/1.jpg");
filepath.add("F:/51/2.jpg"); //
sendMail("接收郵件賬號,接收郵件賬號,接收郵件賬號",
"郵箱測試", "測試發送多人,多附件", filepath);
}
}
附:這里使用的是163郵箱, 使用騰訊QQ 郵箱沒成功,不是報530 就是535 的 不知道為何,我也開通了POP3/SMTP服務
有成功的小伙伴可以給我留個言,或者直接投稿到我專題頁OK ,謝謝,希望互相學習,一起進步