備注:本例子已QQ郵箱發(fā)送為例(郵件發(fā)送要用線程不然網(wǎng)站會(huì)很慢)乡摹;
使用先郵箱設(shè)置:先開啟郵箱 Pop3Smtp服務(wù)獲取授權(quán)碼
怎么獲取授權(quán)碼扰才?
先進(jìn)入設(shè)置-》帳戶頁面找到入口撮执,按照以下流程操作黍檩。
依賴jar包:javax.mail 1.4.4
package external.email;
import java.security.GeneralSecurityException;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.sun.mail.util.MailSSLSocketFactory;
public class JavaEmailApi {
private static String SendEmailAccount ="xxxx@qq.com";
private static String Pop3SmtpKey ="xxxxxxxxxxx";
public static void SendEmail(String recipientAccount,String subject,String content){
//跟smtp服務(wù)器建立一個(gè)連接
Properties p = new Properties();
//設(shè)置郵件服務(wù)器主機(jī)名
p.setProperty("mail.host", "smtp.qq.com");//指定郵件服務(wù)器燕刻,默認(rèn)端口號(hào)25
//發(fā)送服務(wù)器需要身份證驗(yàn)證
p.setProperty("mail.smtp.auth", "true");//要采用指定用戶名密碼的方式去認(rèn)證
//發(fā)送郵件協(xié)議名稱
p.setProperty("mail.transport.protocol", "smtp");
//開啟SSL加密脸爱,否則會(huì)失敗
MailSSLSocketFactory sf = null;
try {
sf = new MailSSLSocketFactory();
} catch (GeneralSecurityException e1) {
e1.printStackTrace();
}
sf.setTrustAllHosts(true);
p.put("mail.smtp.ssl.enable", "true");
p.put("mail.smtp.ssl.socketFactory", sf);
//開啟debug調(diào)試,以便在控制臺(tái)查看
// session.setDebug(true);也可以這樣設(shè)置
// p.setProperty("mail.debug", "true");
//創(chuàng)建session
Session session = Session.getDefaultInstance(p, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
//用戶名可以用QQ賬號(hào)也可以用郵箱的別名
PasswordAuthentication pa = new PasswordAuthentication(SendEmailAccount, Pop3SmtpKey);
//后面的字符是授權(quán)碼昼丑,用qq密碼不行I肽妗!
return pa;
}
});
//session.setDebug(true);//設(shè)置打開調(diào)試狀態(tài)
try {
//聲明一個(gè)Message對(duì)象(代表一封郵件),從session中創(chuàng)建
MimeMessage msg = new MimeMessage(session);
//郵件信息封裝
// 1發(fā)件人
msg.setFrom(new InternetAddress(SendEmailAccount));
// 2收件人
msg.setRecipient(RecipientType.TO, new InternetAddress(recipientAccount));
// 3郵件內(nèi)容:主題菩帝、內(nèi)容
msg.setSubject(subject);
// StringBuilder是線程不安全的,但是速度快咖城,這里因?yàn)橹粫?huì)有這個(gè)線程來訪問,所以可以用這個(gè)
/*StringBuilder sbd = new StringBuilder();
sbd.append("645833737@qq.com
歡迎胁附!請(qǐng)確認(rèn)此郵件地址以激活您的賬號(hào)酒繁。
");
sbd.append("
sbd.append(">立即激活
");
sbd.append("或者點(diǎn)擊下面鏈接:
");
sbd.append("http://192.168.1.102:8080/myMailWeb/ActiveServlet?acode=111111
");
sbd.append("這是一封自動(dòng)發(fā)送的郵件;如果您并未要求但收到這封信件控妻,您不需要進(jìn)行任何操作州袒。");
//msg.setContent(sbd.toString(), "text/html;charset=utf-8");//發(fā)html格式的文本
msg.setContent(content, "text/html;charset=utf-8");//發(fā)html格式的文本
*///發(fā)送動(dòng)作
Transport.send(msg);
//System.out.println("給645833737@qq.com發(fā)送郵件成功。");
} catch (AddressException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
}
}