電子郵箱協議
常用的電子郵件協議有SMTP
、POP3
、IMAP4
,它們都隸屬於TCP/IP協議簇,默認狀態下,分別通過TCP端口25、110和143建立連接。
SMTP協議
SMTP的全稱是“Simple Mail Transfer Protocol
”,即簡單郵件傳輸協議。SMTP是一個相對簡單的基於文本
的協議。它是一組用於從源地址到目的地址傳輸郵件的規範,通過它來控制郵件的中轉方式。SMTP 協議屬於TCP/IP協議簇
,它幫助每臺計算機在發送或中轉信件時找到下一個目的地。SMTP 服務器就是遵循SMTP協議的發送郵件服務器。SMTP認證,簡單地說就是要求必須在提供了賬戶名和密碼之後纔可以登錄 SMTP 服務器
,這就使得那些垃圾郵件的散播者無可乘之機。增加 SMTP 認證的目的是爲了使用戶避免受到垃圾郵件的侵擾。
SMTP已是事實上的E-Mail傳輸的標準。
工作過程
SMTP協議的工作過程可分爲如下3個過程:
(1) 建立連接:在這一階段,SMTP客戶請求與服務器的25
端口建立一個TCP連接。一旦連接建立,SMTP服務器和客戶就開始相互通告自己的域名,同時確認對方的域名。
(2) 郵件傳送:利用命令,SMTP客戶將郵件的源地址、目的地址和郵件的具體內容
傳遞給SMTP服務器,SMTP服務器進行相應的響應並接收郵件。
(3)連接釋放:SMTP客戶發出退出命令,服務器在處理命令後進行響應,隨後關閉TCP連接。
(以上摘自百度百科)
舉例
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
import java.util.Scanner;
public class Mailer {
public static void main(String[] args)throws Exception{
String from = "[email protected]";
String to = "[email protected]";
String host = "smtp.qq.com"; //服務器地址
Properties props = System.getProperties();
props.setProperty("mail.smtp.host",host);
props.put("mail.smtp.auth",true);
//props.setProperty("mail.smtp.timeout","10000");
Session session = Session.getDefaultInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(
"[email protected]",
"xxxxx" //16位授權碼
);
}
});
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.setRecipient(Message.RecipientType.TO,new InternetAddress(to));
message.setSubject("這裏是我的郵箱"); //標題
message.setText("xx"); //內容
Transport.send(message);
}
}