在使用163或qq等郵箱發送郵件的時,需要在郵箱的設定中打開SMTP服務才能使用郵箱用戶端軟體登陸到郵箱伺服器上發送郵件
需要下載下傳javamail.jar包,官網下載下傳位址為 點選打開連結
本人已上傳javamail1.5.2版本到CSDN,點選打開連結
package mail;
import java.util.Date;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
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 JavaMailTextSender {
String SMTPHost = "";// SMTP伺服器
String user = "";// 登陸SMTP伺服器的賬号
String password = "";// 登陸SMTP伺服器的密碼
String from = "";// 發件人郵箱
String to = "";// 收件人郵箱
String subject = "";// 郵箱标題 主題
String content = "";// 郵件内容
boolean html = true;// 檔案内容為html格式
boolean ssl = false;// 是否使用ssl
// 指定郵件優先級 1:緊急,3:普通,5:緩慢
String priority = "3";
public static void main(String[] args) {
JavaMailTextSender mailTextSender = new JavaMailTextSender();
mailTextSender.setSMTPHost("smtp.qq.com");// SMTP伺服器 如果是163郵箱則是smtp.163.com
mailTextSender.setUser("[email protected]");// 登陸SMTP伺服器的賬号
mailTextSender.setPassword("*****");// 登陸SMTP伺服器的密碼 即郵箱賬号密碼
mailTextSender.setFrom("[email protected]");// 發件人郵箱
mailTextSender.setTo("[email protected]");// 收件人郵箱
mailTextSender.setSubject("主題");// 郵箱标題 主題
mailTextSender.setContent("<font color=red>郵件正文</font>");// 郵件内容
mailTextSender.setHtml(true);// 檔案内容為html格式
mailTextSender.setSsl(true);// 是否使用ssl
boolean succ = mailTextSender.sendMain();
if (succ) {
System.out.println("郵件發送成功");
} else {
System.out.println("失敗!");
}
}
// 構造函數
public JavaMailTextSender() {
}
// 發送郵件
public boolean sendMain() {
// 建立一個屬性對象
Properties props = new Properties();
// 指定SMTP伺服器
props.put("mail.smtp.host", getSMTPHost());
// 指定是否需要SMTP驗證
props.put("mail.smtp.auth", "true");
try {
if (isSsl()) {
MailSSLSocketFactory sfFactory = new MailSSLSocketFactory();
sfFactory.setTrustAllHosts(true);
// or
// sfFactory.setTrustedHosts(new String[]{"my-server"});
props.put("mail.smtp.ssl.enable", "true");
// also use following for additional safety
// props.put("mail.smtp.ssl.checkserveridentity", "true");
props.put("mail.smtp.ssl.socketFactory", sfFactory);
}
// 建立一個授權驗證對象
SmtpAuth auth = new SmtpAuth();
auth.setAccount(getUser(), getPassword());
// 建立一個Session對象
Session mailSession = Session.getDefaultInstance(props, auth);
mailSession.setDebug(true);
// 建立一個Message對象
Message message = new MimeMessage(mailSession);
// 指定發件人郵箱
message.setFrom(new InternetAddress(getFrom()));
// 指定收件人郵箱
message.addRecipient(Message.RecipientType.TO, new InternetAddress(
getTo()));
// 指定郵件主題
message.setSubject(getSubject());
if (isHtml()) {
// 指定郵件内容,郵件的MIME類型指定為html格式,編碼方式為uft-8
message.setContent(getContent(), "text/html;charset=utf-8");
} else {
// 指定郵件内容 郵件的 MIME類型預設指定為 "text/plain"
message.setText(getContent());
}
// 指定郵件發送日期
message.setSentDate(new Date());
// 指定郵件優先級 1:緊急,3:普通,5:緩慢
message.setHeader("X-Priority", getPriority());
message.saveChanges();
// 建立一個Transport對象
// Transport類根據指定的郵件發送協定(如SMTP),通過指定的賬号和密碼連接配接指定的郵件發送伺服器發送郵件。
Transport transport = mailSession.getTransport("smtp");
// 連接配接SMTP伺服器
transport.connect(getSMTPHost(), getUser(), getPassword());
// 發送郵件
transport.sendMessage(message, message.getAllRecipients());
transport.close();
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
// 定義一個SMTP授權驗證類
/**
* JavaMail API通過使用授權類(Authenticator)以使用者名、密碼的方式通路郵件伺服器
*
* @author Administrator
*
*/
static class SmtpAuth extends Authenticator {
String user, password;
/**
* 設定使用者名和密碼,用于通路郵件伺服器
*
* @param user
* @param password
*/
void setAccount(String user, String password) {
this.user = user;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, password);
}
}
// 屬性的getter和setter
public String getSMTPHost() {
return SMTPHost;
}
public void setSMTPHost(String sMTPHost) {
SMTPHost = sMTPHost;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public boolean isSsl() {
return ssl;
}
public void setSsl(boolean ssl) {
this.ssl = ssl;
}
public boolean isHtml() {
return html;
}
public void setHtml(boolean html) {
this.html = html;
}
public String getPriority() {
return priority;
}
public void setPriority(String priority) {
this.priority = priority;
}
}