首頁 > 軟體

JavaMail實現傳送郵件(QQ郵箱)

2022-08-11 14:02:44

本文範例為大家分享了JavaMail實現傳送郵件的具體程式碼,供大家參考,具體內容如下

用的qq郵箱,需要去郵箱設定那邊開一下stmp服務啥的獲得下面要用到的密碼,具體開服務自己百度,這邊不截圖了。

程式碼如下:導包和工具類,可用!

一、導這個包

<dependency>
    <groupId>javax.mail</groupId>
     <artifactId>mail</artifactId>
    <version>1.5.0-b01</version>
</dependency>

二、工具類封裝成物件

import lombok.Data;

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 MailHelper
{
    /**
     * 郵件伺服器主機名。
     */
    private static String HOST_NAME;

    private String sendMailUrl ;
    private String receiveMailUrl;
    /**
     * IMAP/SMTP服務的密碼 去qq郵箱開的。 幾個月前的失效了還是蠻奇怪的 2021年8月5日21:33:36
     */
    private String servicePassword;


    static {
        //預設直接qq的吧
        HOST_NAME = "smtp.qq.com";
    }
    public MailHelper(String sendMailUrl,String receiveMailUrl,String servicePassword){
        this.sendMailUrl=sendMailUrl;
        this.receiveMailUrl=receiveMailUrl;
        this.servicePassword=servicePassword;
    }

    public  void sendSimpleMail(Mail mail) throws Exception {
        Properties prop = new Properties();
         設定郵件伺服器主機名
        prop.setProperty("mail.host", "smtp.qq.com");
        // 傳送郵件協定名稱
        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伺服器,使用者名稱和密碼都通過驗證之後才能夠正常傳送郵件給收件人。

        // 注:這邊host必須填寫smtp.qq.com
        // 而不是你qq郵箱賬號如1741049@qq.com,否則報錯host名unkonwn。
        // Host:郵件伺服器主機名
        ts.connect(HOST_NAME, receiveMailUrl, servicePassword);
        // 4、建立郵件
        Message message = createSimpleMail(session, mail.getTitle(), mail.getContent());
        // 5、傳送郵件
        ts.sendMessage(message, message.getAllRecipients());
        ts.close();
    }
    
    private MimeMessage createSimpleMail(Session session, String title, String content) throws Exception {
        // 建立郵件物件
        MimeMessage message = new MimeMessage(session);
        // 指明郵件的發件人
        message.setFrom(new InternetAddress(receiveMailUrl));
        // 指明郵件的收件人,現在發件人和收件人是一樣的,那就是自己給自己發
        message.setRecipient(Message.RecipientType.TO, new InternetAddress(receiveMailUrl));
        // 郵件的標題
        message.setSubject(title);
        // 郵件的文字內容
        message.setContent(content, "text/html;charset=UTF-8");
        // 返回建立好的郵件物件
        return message;
    }
    @Data
    public static class Mail{
        private String title;
        /**
         * 正文
         */
        private String content;
        public Mail(){

        }
        public Mail(String title,String content){
            this.title=title;
            this.content=content;
        }

    }
}

測試類:

package com.forever.junittest;

import com.forever.gitfund.util.MailHelper;
import com.forever.gitfund.util.MailHelper.Mail;
import org.junit.Test;

public class TestMailHelper {

    @Test
    public void test() throws Exception {
        String qq = "xx@qq.com";
        String send = qq;
        MailHelper mailHelper = new MailHelper(qq,send,"xxxxx");
        Mail mail = new Mail();
        String title = "我的第一封郵件";
        String content = "這是我的第一封郵件 from idea";
        mail.setTitle(title);
        mail.setContent(content);
        mailHelper.sendSimpleMail(mail);
    }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com