javaMail (java代碼發送郵件)

第一在郵件帳戶設置開啓如下兩個html

須要發送短信獲取  受權碼。java

代碼以下:服務器

package com.hjb.javaMail;

import javax.mail.*;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.Properties;


public class Mail {

    /**
     * 一、SMTP 服務器的端口 (不一樣的服務器可能會有不一樣端口號)
     * 二、會話對象,用於和郵件服務器交互
     * 三、郵件對象
     */

    public static final String smtpPort = "465";

    private Session session;

    private MimeMessage message;

    public Mail() { }

    /**
     * 初始化方法
     *
     * @param myEmailSMTPHost 發件人郵箱 SMTP 地址
     * @param agreement       使用的協議
     * @param auth            是否須要請求認證
     */
    public Mail(String myEmailSMTPHost, String agreement, String auth) throws NoSuchProviderException {

        // 配置參數
        Properties properties = new Properties();

        properties.setProperty("mail.transport.protocol", agreement);

        properties.setProperty("mail.smtp.host", myEmailSMTPHost);

        properties.setProperty("mail.smtp.auth", auth);

        properties.setProperty("mail.smtp.port", smtpPort);

        properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

        properties.setProperty("mail.smtp.socketFactory.fallback", "false");

        properties.setProperty("mail.smtp.socketFactory.port", smtpPort);

        // 獲取一個郵件會話對象
        session = Session.getInstance(properties);

        // 是否須要開啓 debug 模式,開啓後會輸出詳細的 log 信息
        session.setDebug(true);

        // 建立一封郵件
        message = new MimeMessage(session);
    }

    /**
     * 設置郵件內容
     *
     * @param myEmailAccout  發件人郵箱
     * @param addresseeEmail 收件人郵箱
     * @param emailSubject   郵件主題
     * @param emailContent   郵件正文(PS:能夠是 HTML 標籤形式)
     * @return MimeMessage  郵件
     * @throws Exception
     */
    public MimeMessage setEmail(String myEmailAccout, String addresseeEmail, String emailSubject, String emailContent) throws MessagingException {
        message.setFrom(myEmailAccout);

        // 第一個參數 以 收件人、抄送、密送 的形式,具體意思請自行百度(手動捂臉)
        message.setRecipients(Message.RecipientType.TO, addresseeEmail);

        message.setSubject(emailSubject, "UTF-8");

        message.setContent(emailContent, "text/html;charset=UTF-8");

        // 郵件發送時間
        message.setSentDate(new Date());

        // 保存設置內容
        message.saveChanges();

        return message;
    }

    /**
     * 發送郵件
     *
     * @param myEmailAccout   發件人郵箱
     * @param myEmailPassword 發件人郵箱受權碼(163 郵箱的叫作獨立密碼)
     * @throws MessagingException
     */
    public void sendOut(String myEmailAccout, String myEmailPassword) throws MessagingException {
        // 第一步:經過郵件會話對象(Session)獲取郵件傳輸對象
        Transport transport = session.getTransport();

        // 第二步:進行鏈接
        transport.connect(myEmailAccout, myEmailPassword);

        // 第三步:發送郵件,第一個參數是:郵件對象(MimeMessage),第二個參數獲取保存設置後的郵件內容
        transport.sendMessage(message, message.getAllRecipients());

        // 第三步:關閉鏈接。
        transport.close();
    }
}
View Code

 

測試代碼:session

package com.hjb.javaMail;

import com.hjb.javaMail.Mail;

import javax.mail.MessagingException;

public class TestMail {

    public static void main(String[] args) throws MessagingException {
        String myEmailAccount = "發件人@qq.com";

        String myEmailPassword = "gciljwmywhyzbcdj"; //這個就是受權碼

        // 每一個郵箱的地址有所不一樣
        String myEmailSMTPHost = "smtp.qq.com";

        String addresseeEmail = "收件人@qq.com";

        String agreement = "smtp";

        String auth = "true";

        String emailSubject = "元宵節快樂";

        String emailContent = "<h3>fsdafdsfsdaf</h3>";

        Mail mail = new Mail(myEmailSMTPHost, agreement, auth);
        mail.setEmail(myEmailAccount, addresseeEmail, emailSubject, emailContent);
        mail.sendOut(myEmailAccount, myEmailPassword);
    }

}
View Code

 

 

效果圖socket

相關文章
相關標籤/搜索