javaMail發送一封自定義的郵件

一、郵件開發的相關協議

SMTP : Simple Message Transfer Protocal  也就是發送協議;默認端口是25

POP:Post Office Protocal  字面翻譯是郵局協議,也就是接收協議,默認端口是110

二、郵件發送接收的過程

三、準備工作

1.申請郵箱,我這裏申請的是網易郵箱,接着登錄,在設置裏開通POP3/SMTP服務,開通這兩個服務後纔可以在第三方發送接收郵件

      2.啓用客戶端授權碼,用以第三方登錄連接網易服務器

 

四、編寫代碼

public class TestMail {
    
    public static void main(String[] args) throws Exception {
        Properties props = new Properties();    //創建Properties對象,用於存放key-value
        props.put("mail.smtp.host", "smtp.163.com");  //指定郵件發送服務器地址
        props.put("mail.smtp.auth", "true");  //服務器是否需要驗證用戶的身份信息
        
        Session session = Session.getInstance(props);  //得到session
        session.setDebug(true);  //代表啓用debug模式,可以在控制檯輸出SMTP協議應答的過程
        
        //創建一個MimeMessage格式的郵件
        MimeMessage message = new MimeMessage(session);
        
        //設置郵件的發送者,Address是抽象類,找子類創建對象
        Address fromAddress = new InternetAddress("[email protected]");  //郵件地址
        message.setFrom(fromAddress);  //設置發件箱
        
        //設置郵件的接收者
        Address toAddress = new InternetAddress("[email protected]");  //郵件地址
        message.setRecipient(RecipientType.TO, toAddress);  //設置接收者地址
        
        //設置郵件的信息
        message.setSubject("新年快樂");  //郵件主題 
        message.setText("朋友,元旦已到,願你快樂");  //郵件內容
        
        //保存郵件
        message.saveChanges();
        
        //得到發送郵件的通道
        Transport transport = session.getTransport("smtp");  //傳入發送協議
        //通道鏈接到服務器
        transport.connect("smtp.163.com", "[email protected]", "dirkzh00");
        
        //通道發送
        transport.sendMessage(message, message.getAllRecipients());
        
        //關閉通道
        transport.close();
    }
}


五、發送郵件

    1.控制檯打印相關信息

    2.發送郵件成功

寫在最後:

需要注意的地方:一定要開通POP/SMTP服務;然後獲取第三方登錄的授權碼;另外如果你是網易郵箱給QQ郵箱發消息,QQ郵箱默認是垃圾郵件,需要你在垃圾箱重拾一下,之後便可以了;還有就是如果你想用QQ郵箱做服務端,開通那兩個服務會有點麻煩。我只試了網易和QQ這兩個郵箱,你可以多試試,有問題添加微信DirkZhouzlw。

謝謝你的閱讀,朋友。

 

 

 

 

 

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