使用java傳送郵件
阿新 • • 發佈:2018-12-12
在一些網站登入註冊的時候,常常會讓使用者繫結郵箱,然後往使用者輸入的郵箱中傳送一個連結或者驗證碼讓使用者驗證郵箱,總不能使用人力去手動一封封郵件去發,事實上,我們通過java可以非常方便地實現郵件傳送的功能,下面我們以qq郵箱為例,用java實現傳送郵件的功能。
傳送郵件的原理實際上是大家共同制定了郵件協議,無論是qq郵箱還是網易郵箱雅虎郵箱之類的都是遵守了郵件協議,在協議的基礎上封裝了自家的功能,所以我們傳送郵件的原理就是通過遵守協議去達到郵件傳送的目標。
首先,我們需要去qq郵箱的設定中開啟一個服務,開啟qq郵箱網頁,找到設定:
選擇賬戶選項:
找到如下設定,將紅框中的設定設定為開啟:
開啟之後,會彈出驗證,驗證之後會顯示一串密碼,我們把這個密碼記錄下來。
下面是我們傳送郵件的具體程式碼:
package com;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class Test {
public static void main(String[] args) throws Exception {
new Thread(new Runnable() {
public void run() {
for(int i=0;i<10;i++)
{
try
{
Properties prop = new Properties();
prop.setProperty("mail.host", "smtp.qq.com");//這裡設定了用qq郵箱發郵件
prop.setProperty ("mail.transport.protocol", "smtp");
prop.setProperty("mail.smtp.auth", "true");
//使用JavaMail傳送郵件的5個步驟
//1、建立session
Session session = Session.getInstance(prop);
//開啟Session的debug模式,這樣就可以檢視到程式傳送Email的執行狀態
session.setDebug(true);
//2、通過session得到transport物件
Transport ts = session.getTransport();
//3、使用郵箱的使用者名稱和密碼連上郵件伺服器,傳送郵件時,發件人需要提交郵箱的使用者名稱和密碼給smtp伺服器,使用者名稱和密碼都通過驗證之後才能夠正常傳送郵件給收件人。
ts.connect("smtp.qq.com", "你的qq郵箱賬號,注意不用帶@qq.com", "你剛剛得到的密碼");
//4、建立郵件
Message message = createSimpleMail(session);
//5、傳送郵件
ts.sendMessage(message, message.getAllRecipients());
ts.close();
Thread.sleep(4000);
}catch (Exception e) {
// TODO: handle exception
}
}
}
}).start();
}
public static MimeMessage createSimpleMail(Session session)
throws Exception {
//建立郵件物件
MimeMessage message = new MimeMessage(session);
//指明郵件的發件人
message.setFrom(new InternetAddress("郵箱地址,如:[email protected]"));
//指明郵件的收件人
message.setRecipient(Message.RecipientType.TO, new InternetAddress("郵箱地址,如:[email protected]"));
//郵件的標題
message.setSubject("標題");
//郵件的文字內容
message.setContent("郵件的內容", "text/html;charset=UTF-8");
//返回建立好的郵件物件
return message;
}
}
這些程式碼會連續傳送十條郵件哦~~