摘要
實例爲通過QQ發送,其他類型郵箱類似
首先下載javax.mail.jar
包,[點擊下載]
(https://github.com/javaee/javamail/releases)
注意:
不需要下載activation.jar
,JDK1.5以後這個jar包已經集成到JDK了,親測有效。
代碼如下:
package pers.husen.sendemail;
import java.io.UnsupportedEncodingException;
import java.security.GeneralSecurityException;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.sun.mail.util.MailSSLSocketFactory;
public class SendEmail {
public static void main(String[] args) {
try {
// 建立屬性對象
Properties properties = new Properties();
// 開啓SSL
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
// 開啓認證
properties.put("mail.smtp.auth", "true");
// 開啓SSL
properties.put("mail.smtp.ssl.enable", "true");
properties.put("mail.smtp.ssl.socketFactory", sf);
// 設置郵件服務器主機名
properties.setProperty("mail.host", "smtp.qq.com");
// 設置端口
properties.setProperty("mail.smtp.port", "465");
// 根據認證獲取默認session對象
Session session = Session.getDefaultInstance(properties, new Authenticator() {
@Override
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("[email protected]", "此處填密碼(QQ郵箱填授權碼)");
}
});
// 創建默認的 MimeMessage 對象
MimeMessage message = new MimeMessage(session);
// Set From: 頭部頭字段
message.setFrom(new InternetAddress("[email protected]", "何明勝", "UTF-8"));
// 收件人電子郵箱 可用數組設置多個
message.addRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]"));
// 要求閱讀回執(收件人閱讀郵件時會提示回覆發件人,表明郵件已收到,並已閱讀)
//message.setHeader("Disposition-Notification-To", "[email protected]");
// 設置標題
message.setSubject("來自測試的郵件標題!");
// 設置郵件內容 普通文本
// message.setText("測試郵件內容");
// 設置內容 HTML
message.setContent("郵件內容123", "text/html;charset=UTF-8");
/** 帶附件 * */
/*// 文本內容
MimeBodyPart contentBodyPart = new MimeBodyPart();
contentBodyPart.setContent("<p>測試郵件的段落</p>", "text/html; charset=utf-8");
// 附件
MimeBodyPart fileMultiPart = new MimeBodyPart();
fileMultiPart.setDataHandler(new DataHandler(new FileDataSource(new File("D:\\Desktop\\簡歷.docx"))));
// 圖片
MimeBodyPart picMultiPart = new MimeBodyPart();
picMultiPart.setDataHandler(new DataHandler(new FileDataSource("D:\\Desktop\\logo.png")));
picMultiPart.setContentID("logo.png");
// 組合
MimeMultipart bodyMultipart = new MimeMultipart("mixed");
bodyMultipart.addBodyPart(contentBodyPart);
bodyMultipart.addBodyPart(fileMultiPart);
bodyMultipart.addBodyPart(picMultiPart);
message.setContent(bodyMultipart);*/
// 發送信息的工具
Transport transport = session.getTransport();
// 發件人郵箱號和密碼 與前面填密碼選一處即可
// transport.connect("[email protected]", "此處填密碼");
transport.connect();
// 對方的地址
transport.sendMessage(message, new Address[] { new InternetAddress("對方的郵箱@qq.com") });
// 關閉連接
transport.close();
System.out.println("Sent message successfully....from console");
} catch (MessagingException | UnsupportedEncodingException | GeneralSecurityException mex) {
mex.printStackTrace();
}
}
}