java發(fā)送郵箱使用方法,以及使用465端口需要注意的問題
2017/6/24 17:40:36 獨(dú)占網(wǎng)絡(luò) 網(wǎng)站建設(shè)知識(shí)
在網(wǎng)站建設(shè)過程中我們經(jīng)常需要使用到郵箱來發(fā)送信息給用戶通知信息,這時(shí)候我們就會(huì)需要使用java發(fā)送郵箱的方法,而且由于出于安全原因,我們有時(shí)候會(huì)使用加密端口465端口來發(fā)送郵箱,下面我們就來講一下發(fā)送郵箱的代碼,還有使用465端口需要加入什么代碼。
發(fā)送郵箱我們需要使用到(mail.jar),這個(gè)大家直接在網(wǎng)上下載就可以了
//需要引入的包
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.*;
import java.util.*;
import javax.activation.*;
public class DuZhan_Email {
private String host; // smtp服務(wù)器 如smtp.163.com
private String from; // 發(fā)件人地址
private String to; // 收件人地址
private String user; // 用戶名
private String pwd ; // 密碼
private String subject; // 郵件標(biāo)題
//設(shè)置郵箱信息,from發(fā)件人,to收件人,subject發(fā)送郵箱的標(biāo)題
public void setAddress(String from, String to, String subject) {
this.from = from;
this.to = to;
this.subject = subject;
}
//發(fā)送郵箱,host發(fā)送的smtp,如smtp.163.com,content發(fā)送郵箱的內(nèi)容
public void send(String host, String user, String pwd,String content) {
this.host = host;
this.user = user;
this.pwd = pwd;
Properties props = new Properties();
// 設(shè)置發(fā)送郵件的郵件服務(wù)器的屬性
props.put("mail.smtp.host", host);
// 需要經(jīng)過授權(quán),也就是有戶名和密碼的校驗(yàn),這樣才能通過驗(yàn)證(一定要有這一條)
props.put("mail.smtp.auth", "true");
//465端口是加密端口,這里是將信息加密,再發(fā)送
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
//設(shè)置發(fā)送端口是465,如果不設(shè)置,默認(rèn)端口是25端口
props.setProperty("mail.smtp.port", "465");
// 用剛剛設(shè)置好的props對(duì)象構(gòu)建一個(gè)session
Session session = Session.getDefaultInstance(props);
// 有了這句便可以在發(fā)送郵件的過程中在console處顯示過程信息,供調(diào)試使
// 用(你可以在控制臺(tái)(console)上看到發(fā)送郵件的過程)
// session.setDebug(true);
// 用session為參數(shù)定義消息對(duì)象
MimeMessage message = new MimeMessage(session);
try {
// 加載發(fā)件人地址
message.setFrom(new InternetAddress(from));
// 加載收件人地址
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
// 加載標(biāo)題
message.setSubject(subject);
// 向multipart對(duì)象中添加郵件的各個(gè)部分內(nèi)容,包括文本內(nèi)容
Multipart multipart = new MimeMultipart();
// 設(shè)置郵件的文本內(nèi)容
BodyPart contentPart = new MimeBodyPart();
contentPart.setText(content);
multipart.addBodyPart(contentPart);
// 將multipart對(duì)象放到message中
message.setContent(multipart);
// 保存郵件
message.saveChanges();
// 發(fā)送郵件
Transport transport = session.getTransport("smtp");
// 連接服務(wù)器的郵箱
transport.connect(host, user, pwd);
// 把郵件發(fā)送出去
transport.sendMessage(message, message.getAllRecipients());
transport.close();
} catch (Exception e) {
//發(fā)送失敗,把原因顯示出來
e.printStackTrace();
}
}
}
下面就是調(diào)用些方法去發(fā)送郵箱
DuZhan_Email cn = new DuZhan_Email();
// 設(shè)置發(fā)件人地址、收件人地址和郵件標(biāo)題
cn.setAddress("test.163.com", "test.163.com", "測試發(fā)送");
cn.send("smtp.163.com", "test.163.com", "密碼","這是發(fā)送的內(nèi)容");
//上面的方法要注意如果使用465商品,需要加入這兩句代碼
//465端口是加密端口,這里是將信息加密,再發(fā)送
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
//設(shè)置發(fā)送端口是465,如果不設(shè)置,默認(rèn)端口是25端口
props.setProperty("mail.smtp.port", "465");
在代碼沒有錯(cuò)誤的時(shí)候,有時(shí)候會(huì)javaee.jar,這個(gè).jar有沖突,有時(shí)候是5 java EE,需要這個(gè)javaee.jar移除,引入6 java EE的javaee.jar