Java Mail 發送郵件實例

摘要
實例爲通過QQ發送,其他類型郵箱類似


首先下載javax.mail.jar包,[點擊下載]
(https://github.com/javaee/javamail/releases)

注意:
不需要下載activation.jar,JDK1.5以後這個jar包已經集成到JDK了,親測有效。


代碼如下:

package pers.husen.sendemail;

import java.io.UnsupportedEncodingException;
import java.security.GeneralSecurityException;
import java.util.Properties;

import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.sun.mail.util.MailSSLSocketFactory;

public class SendEmail {
    public static void main(String[] args) {
        try {
            // 建立屬性對象
            Properties properties = new Properties();
            // 開啓SSL
            MailSSLSocketFactory sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
            // 開啓認證
            properties.put("mail.smtp.auth", "true");
            // 開啓SSL
            properties.put("mail.smtp.ssl.enable", "true");
            properties.put("mail.smtp.ssl.socketFactory", sf);
            // 設置郵件服務器主機名
            properties.setProperty("mail.host", "smtp.qq.com");
            // 設置端口
            properties.setProperty("mail.smtp.port", "465");

            // 根據認證獲取默認session對象
            Session session = Session.getDefaultInstance(properties, new Authenticator() {
                @Override
                public PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication("[email protected]", "此處填密碼(QQ郵箱填授權碼)");
                }
            });
            // 創建默認的 MimeMessage 對象
            MimeMessage message = new MimeMessage(session);
            // Set From: 頭部頭字段
            message.setFrom(new InternetAddress("[email protected]", "何明勝", "UTF-8"));
            // 收件人電子郵箱 可用數組設置多個
            message.addRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]"));
            // 要求閱讀回執(收件人閱讀郵件時會提示回覆發件人,表明郵件已收到,並已閱讀)  
            //message.setHeader("Disposition-Notification-To", "[email protected]");  

            // 設置標題
            message.setSubject("來自測試的郵件標題!");

            // 設置郵件內容 普通文本
            // message.setText("測試郵件內容");
            // 設置內容 HTML
            message.setContent("郵件內容123", "text/html;charset=UTF-8");

            /** 帶附件 * */
            /*// 文本內容
            MimeBodyPart contentBodyPart = new MimeBodyPart();
            contentBodyPart.setContent("<p>測試郵件的段落</p>", "text/html; charset=utf-8");
            // 附件
            MimeBodyPart fileMultiPart = new MimeBodyPart();
            fileMultiPart.setDataHandler(new DataHandler(new FileDataSource(new File("D:\\Desktop\\簡歷.docx"))));
            // 圖片
            MimeBodyPart picMultiPart = new MimeBodyPart();
            picMultiPart.setDataHandler(new DataHandler(new FileDataSource("D:\\Desktop\\logo.png")));
            picMultiPart.setContentID("logo.png");
            // 組合
            MimeMultipart bodyMultipart = new MimeMultipart("mixed");
            bodyMultipart.addBodyPart(contentBodyPart);
            bodyMultipart.addBodyPart(fileMultiPart);
            bodyMultipart.addBodyPart(picMultiPart);
            message.setContent(bodyMultipart);*/

            // 發送信息的工具
            Transport transport = session.getTransport();
            // 發件人郵箱號和密碼 與前面填密碼選一處即可
            // transport.connect("[email protected]", "此處填密碼");
            transport.connect();
            // 對方的地址
            transport.sendMessage(message, new Address[] { new InternetAddress("對方的郵箱@qq.com") });
            // 關閉連接
            transport.close();
            System.out.println("Sent message successfully....from console");
        } catch (MessagingException | UnsupportedEncodingException | GeneralSecurityException mex) {
            mex.printStackTrace();
        }
    }
}
發佈了57 篇原創文章 · 獲贊 38 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章