JavaMail發送郵件

首先導入javamail的jar包,由於使用的是maven項目,所以在pom.xml文件中加入dependency

<!-- https://mvnrepository.com/artifact/javax.mail/mail -->
<dependency>
	<groupId>javax.mail</groupId>
	<artifactId>mail</artifactId>
	<version>1.4</version>
</dependency>

測試代碼:

import java.util.Date;
import java.util.Properties;
import javax.mail.Message.RecipientType;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.junit.Test;

public class EmailTest {

    public static final String SMTPSERVER = "smtp.163.com";
    public static final String SMTPPORT = "465";
    public static final String ACCOUT = "[email protected]";
    public static final String PWD = "xxx";

    @Test
    public void testSendEmail() throws Exception {

        // 創建郵件配置
        Properties props = new Properties();
        props.setProperty("mail.transport.protocol", "smtp"); // 使用的協議(JavaMail規範要求)
        props.setProperty("mail.smtp.host", SMTPSERVER); // 發件人的郵箱的 SMTP 服務器地址
        props.setProperty("mail.smtp.port", SMTPPORT); 
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        props.setProperty("mail.smtp.auth", "true"); // 需要請求認證
        props.setProperty("mail.smtp.ssl.enable", "true");// 開啓ssl


        // 根據郵件配置創建會話,注意session別導錯包
        Session session = Session.getDefaultInstance(props);
        // 開啓debug模式,可以看到更多詳細的輸入日誌
        session.setDebug(true);
        //創建郵件
        MimeMessage message = createEmail(session);
        //獲取傳輸通道
        Transport transport = session.getTransport();
        transport.connect(SMTPSERVER,ACCOUT, PWD);
        //連接,併發送郵件
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();

    }


    public MimeMessage createEmail(Session session) throws Exception {
        // 根據會話創建郵件
        MimeMessage msg = new MimeMessage(session);
        // address郵件地址, personal郵件暱稱, charset編碼方式
        InternetAddress fromAddress = new InternetAddress(ACCOUT,
                "xxx", "utf-8");
        // 設置發送郵件方
        msg.setFrom(fromAddress);
        InternetAddress receiveAddress = new InternetAddress(
                "xxx.com", "test", "utf-8");
        // 設置郵件接收方
        msg.setRecipient(RecipientType.TO, receiveAddress);
        // 設置郵件標題
        msg.setSubject("郵件標題", "utf-8");
        msg.setText("郵件內容");
        // 設置顯示的發件時間
        msg.setSentDate(new Date());
        // 保存設置
        msg.saveChanges();
        return msg;
    }
}

可能的報錯:

553 authentication is required

需要在163郵箱開啓

發件人的密碼需要填寫授權碼

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