1. 程式人生 > >JavaMail傳送郵件api例項

JavaMail傳送郵件api例項

郵件傳送程式

我們先使用JavaMail API傳送一封簡單的郵件,步驟為

  • 建立包含郵件伺服器的網路連線資訊的Session物件。
  • 建立代表郵件內容的Message物件。
  • 建立Transport物件、連線伺服器、傳送Message、關閉連線。

這樣使用JavaMail API傳送一封最簡單的郵件(純文字郵件)的程式碼為:

public class SendMail {

    public static void main(String[] args) throws Exception {

        Properties prop = new Properties();
        prop.setProperty("mail.smtp.host"
, "smtp.163.com"); prop.setProperty("mail.transport.protocol", "smtp"); prop.setProperty("mail.smtp.auth", "true"); Session session = Session.getInstance(prop); // 創建出與指定郵件伺服器會話的session /* * 為了看清javamail這套API到底是如何向伺服器發郵件的,可以把session的Debug開關開啟, * 把這個除錯開關開啟,javamail這套API會把它與伺服器的互動過程列印在命令列視窗 */
session.setDebug(true); Message message = createMessage(session); Transport ts = session.getTransport(); ts.connect("yerenyuan10001", "郵箱登入密碼"); // 連線上郵件伺服器,其內部會自動幫你進行base64編碼 ts.sendMessage(message, message.getAllRecipients()); // 向誰傳送一封郵件 ts.close(); // 斷開與伺服器的連線
} private static Message createMessage(Session session) throws AddressException, MessagingException, UnsupportedEncodingException { MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("[email protected]")); message.setRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]")); message.setSubject("love"); message.setContent("hello hello liayun", "text/html"); message.saveChanges(); return message; } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

提示:創建出包含郵件伺服器的網路連線資訊的Session物件之後,為了看清JavaMail這套API到底是如何向郵件伺服器傳送郵件的,可以把session的Debug開關開啟,把這個除錯開關開啟後,JavaMail這套API會把它與郵件伺服器的互動過程列印在Eclipse的控制檯上。 
執行以上程式,然後登陸到[email protected]郵箱當中,就可以收取到由[email protected]傳送的Email了,如下圖所示: 
這裡寫圖片描述
接著我們使用JavaMail API傳送一封複雜郵件,如下:

public class SendMail {

    public static void main(String[] args) throws Exception {

        Properties prop = new Properties();
        prop.setProperty("mail.smtp.host", "smtp.163.com");
        prop.setProperty("mail.transport.protocol", "smtp");
        prop.setProperty("mail.smtp.auth", "true");

        Session session = Session.getInstance(prop); // 創建出與指定郵件伺服器會話的session
        /*
         * 為了看清javamail這套API到底是如何向伺服器發郵件的,可以把session的Debug開關開啟,
         * 把這個除錯開關開啟,javamail這套API會把它與伺服器的互動過程列印在命令列視窗
         */
        session.setDebug(true);
        Message message = createMessage(session);

        Transport ts = session.getTransport();
        ts.connect("yerenyuan10001", "郵箱登入密碼"); // 連線上郵件伺服器,其內部會自動幫你進行base64編碼
        ts.sendMessage(message, message.getAllRecipients()); // 向誰傳送一封郵件
        ts.close(); // 斷開與伺服器的連線
    }

    private static Message createMessage(Session session) throws AddressException, MessagingException, UnsupportedEncodingException {
        // 建立郵件
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress("[email protected]"));
        message.setRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]"));
        message.setSubject("我愛你,那個人");

        // 建立bodypart封裝正文
        MimeBodyPart text = new MimeBodyPart();
        text.setContent("我是真的愛你,你知道嗎?<img src='cid:1.jpg'>", "text/html;charset=UTF-8");

        // 建立bodypart封裝圖片
        MimeBodyPart image = new MimeBodyPart();
        image.setDataHandler(new DataHandler(new FileDataSource("src/1.jpg")));
        image.setContentID("1.jpg");

        // 建立bodypart封裝附件
        MimeBodyPart attach = new MimeBodyPart();
        DataHandler dh = new DataHandler(new FileDataSource("src/愛的祕密藍調口琴曲.mp3"));
        attach.setDataHandler(dh);
        // System.out.println(dh.getName()); // 資料處理器獲取附件名時沒有中文亂碼問題,顯示正常

        // 只要呼叫了setFileName方法,它就會自動幫你生成Content-Disposition這個頭欄位
        attach.setFileName(MimeUtility.encodeText(dh.getName())); // 設定附件名的時候出現中文亂碼問題了,該怎麼解決呢?

        // 描述資料關係
        MimeMultipart content = new MimeMultipart();
        content.addBodyPart(text);
        content.addBodyPart(image);
        content.setSubType("related");

        MimeBodyPart mbp = new MimeBodyPart();
        mbp.setContent(content);

        MimeMultipart mm = new MimeMultipart();
        mm.addBodyPart(mbp);
        mm.addBodyPart(attach);
        mm.setSubType("mixed");

        message.setContent(mm);
        message.saveChanges();

        return message;
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69

執行以上程式,然後登陸到[email protected]郵箱當中,就可以收取到由[email protected]傳送的Email了,

相關推薦

JavaMail傳送郵件api例項

郵件傳送程式 我們先使用JavaMail API傳送一封簡單的郵件,步驟為 建立包含郵件伺服器的網路連線資訊的Session物件。建立代表郵件內容的Message物件。建立Transport物件、連線伺服器、傳送Message、關閉連線。 這樣使用JavaMail AP

JavaMail傳送郵件API簡單介紹

主要API: 1、Message類:建立解析郵件的內容 2、Transport類:傳送郵件的API 3、Store類:接收郵件的API 4、Session類:配置郵件伺服器的主機名,埠號,採用的郵件傳送和接收的協議。 JavaMail傳送郵件相關的jar包: 1、activ

JavaWeb中使用JavaMail實現傳送郵件功能例項詳解

現在很多的網站都提供有使用者註冊功能, 通常我們註冊成功之後就會收到一封來自注冊網站的郵件。郵件裡面的內容可能包含了我們的註冊的使用者名稱和密碼以及一個啟用賬戶的超連結等資訊。今天我們也來實現一個這樣的功能,使用者註冊成功之後,就將使用者的註冊資訊以Email的形式傳送到使

JavaMail傳送郵件時出現MailSSLSocketFactory異常問題

昨天晚上在調畢業設計程式的時候,系統中有一個傳送郵件的功能,但是在點擊發送後,程式報了錯,異常資訊是 java.lang.ClassNotFoundException: com.sun.mail.util.MailSSLSocketFactory,然後第一反應是jar包中沒有這個類,然後在ma

Spring JavaMail傳送郵件

JavaMail的介紹      JavaMail,顧名思義,提供給開發者處理電子郵件相關的程式設計介面。它是Sun釋出的用來處理email的API。它可以方便地執行一些常用的郵件傳輸。    雖然JavaMail是Sun的A

SpringBoot整合JavaMail傳送郵件 --轉載

JavaMail是SUN提供給廣大Java開發人員的一款郵件傳送和接受的一款開源類庫,支援常用的郵件協議,如:SMTP、POP3、IMAP,開發人員使用JavaMail編寫郵件程式時,不再需要考慮底層的通訊細節如:Socket而是關注在邏輯層面。JavaMail可以傳送各種複雜MIME格式的郵件內容

java使用javamail傳送郵件

1.pom.xml檔案配置 <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.

利用JavaMail傳送郵件:smtp.163.com

一、利用JavaMail傳送郵件案例: 1、maven專案結構: 2、先在pom.xml裡邊加入Javamail依賴,系統會根據座標自動下載mail包(前提是配置好了maven): 3、配置email.properties屬性檔案,主要是為了不更改程式碼的前提下,該改變傳送郵件的一些基本資訊:

Android 使用javamail傳送郵件

專案需要activation.jar,additionnal.jar,mail.jar 下載三個包 編寫郵件傳送步驟: 設定伺服器 新增郵箱認證 設定認證的Session(重要) 根據Session獲取郵件物件(MimeMessage) 郵件物件的填充(發件人,收

JavaMail 傳送郵件的程式

JavaMail01:  package com.yuming.test; import java.util.Properties; import javax.mail.Address; import javax.mail.Message; import javax.mail

利用JavaMail傳送郵件示例

    最近閒來無事,為了鞏固一下知識點,寫了一個利用JavaMail傳送郵件的例子。只寫了一個傳送的例子,以後有時間再寫下接收的例子。 1、簡單介紹一下JavaMail的傳送步驟 根據郵件會話屬性和密碼驗證器構造一個傳送郵件的session會話 通過session會話

使用javamail傳送郵件(文字+附件)

java發動郵件其實很簡單,這是使用Javamail來實現,使用maven管理 1.導包:這兩個包缺一不可 <dependency> <groupId>javax.mail</groupId>

使用javamail傳送郵件

在java web專案我們經常會使用到傳送郵件,比如傳送告警通知,對實時性要求不太高的專案就可以發郵件,畢竟是免費的嘛,這裡寫了幾段java傳送郵件的程式碼,參考http://www.iteye.com/topic/352753,自己又改了一下,比如傳送附件,多個抄送人等。

android javamail傳送郵件zip壓縮包在qq郵箱不顯示字尾名問題

其實這就是zip包名中文亂碼, MimeBodyPart attachmentPart = new MimeBodyPart();           FileDataSource fds = new FileDat

spring boot 用javaMail傳送郵件,很多坑

直接傳送總是報錯 554 dt:spm 被163攔截,認為非法,抄送一份給自己就解決了。但是顯示抄送人,很煩。 service層 package com.llong.email.mail; import org.springframework.beans.factory.anno

javaMail傳送郵件獲取SMTP狀態碼

    專案需要整合郵件傳送,之前在.net下寫過smtp的郵件傳送,好像可以直接獲取狀態碼。在網上找到的javamail傳送例子中並未給出如何獲取狀態碼。而且sendMessage方法直接是void沒任何返回引數。       之後在查閱api時終於有所發現      

Quartz+JavaMail傳送郵件

Quartz+JavaMail 第一步:在pom.xml中引入quartz和JavaMail的依賴 <!-- 引入quartz對應的依賴 --> <dependency> <groupId>org.quartz-scheduler</gro

JavaMail傳送郵件 可能會踩的坑

最近在工作中需要用到使用JAVA後臺來給使用者傳送郵件,上網一搜,發現JAVA已經有好用的JAR包來實現JAVA傳送郵件的功能,即:JavaMail.jar 第一步,引入對應的JAR包 下圖是gradle引入JAR包的寫法,目前最新版本就是1.5.6 compil

Springboot 整合 javamail傳送郵件535錯誤

好多夥伴都會遇到 javamail傳送郵件535錯誤  網上有很多經常能搜到的解決方案我姐不說了,提一下我的問題,以及很少能搜到的導致535錯誤的一種原因。  當你的jdk是1.8版本的時候,也是導致535的一種因素:解決:如果還有問題 大家就可以去網上搜搜了,其他的導致53

javaMail傳送郵件,標題/發件人/附件名稱亂碼

javaMail傳送郵件subject會亂碼。 解決辦法: 方法一 在設定主題message.setSubject("なにがありましたら、伝えてくださいね"); 之前設定System.setProperty("mail.mime.charset","UTF-8"); 方法