基於smtp協議郵件發送簡單例子

電子郵箱協議

常用的電子郵件協議有SMTPPOP3IMAP4,它們都隸屬於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);
    }
 
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章