1. 程式人生 > >通過Spring Mail Api傳送郵件

通過Spring Mail Api傳送郵件

【Spring Mail API】

Spring Mail API都在org.springframework.mail及其子包org.springframework.mail.javamail中封裝,且只提供了郵件傳送的封裝。
SimpleMailMessage: 對郵件的一個簡單封裝,只能用於表示一個純文字的郵件,也不能包含附件等。
JavaMailSenderImpl: 郵件傳送器,主要提供了郵件傳送介面、透明建立Java Mail的MimeMessage、及郵件傳送的配置(如:host/port/username/password...)。
MimeMailMessage、MimeMessageHelper:對MimeMessage進行了封裝。Spring還提供了一個回撥介面MimeMessagePreparator, 用於準備JavaMail的MIME信件
一下程式碼轉載自:http://www.blogjava.net/tangzurui/archive/2008/12/08/244953.html

1.傳送簡單的文字郵件

  1. package net.xftzr.mail;  
  2. import java.util.Properties;  
  3. import org.springframework.mail.SimpleMailMessage;  
  4. import org.springframework.mail.javamail.JavaMailSenderImpl;  
  5. /** 
  6.  * 本類測試簡單郵件 直接用郵件傳送 
  7.  *  
  8.  * @author Administrator 
  9.  *  
  10.  */
  11. publicclass SingleMailSend  
  12. {  
  13.     publicstatic
    void main(String args[])  
  14.     {  
  15.         JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();  
  16.         // 設定mail server
  17.         senderImpl.setHost(" smtp.163.com ");  
  18.         // 建立郵件訊息
  19.         SimpleMailMessage mailMessage = new SimpleMailMessage();  
  20.         // 設定收件人,寄件人 用陣列傳送多個郵件
  21.         // String[] array = new String[] {"
    [email protected]
    ","[email protected]"};
  22.         // mailMessage.setTo(array);
  23.         mailMessage.setTo([email protected] ");  
  24.         mailMessage.setFrom([email protected] ");  
  25.         mailMessage.setSubject(" 測試簡單文字郵件傳送! ");  
  26.         mailMessage.setText(" 測試我的簡單郵件傳送機制!! ");  
  27.         senderImpl.setUsername(" userName "); // 根據自己的情況,設定username
  28.         senderImpl.setPassword(" password "); // 根據自己的情況, 設定password
  29.         Properties prop = new Properties();  
  30.         prop.put(" mail.smtp.auth "" true "); // 將這個引數設為true,讓伺服器進行認證,認證使用者名稱和密碼是否正確
  31.         prop.put(" mail.smtp.timeout "" 25000 ");  
  32.         senderImpl.setJavaMailProperties(prop);  
  33.         // 傳送郵件
  34.         senderImpl.send(mailMessage);  
  35.         System.out.println(" 郵件傳送成功.. ");  
  36.     }  
  37. }  

2.傳送簡單的html郵件

org.springframework.mail.javamail.MimeMessageHelper是處理JavaMail郵件常用的順手元件之一。它可以讓你擺脫繁複的javax.mail.internetAPI類

  1. package net.xftzr.mail;  
  2. import java.util.Properties;  
  3. import javax.mail.internet.MimeMessage;  
  4. import org.springframework.mail.javamail.JavaMailSenderImpl;  
  5. import org.springframework.mail.javamail.MimeMessageHelper;  
  6. /** 
  7.  * 本類測試html郵件 
  8.  *  
  9.  * @author sunny 
  10.  *  
  11.  */
  12. publicclass HTMLMailDemo  
  13. {  
  14.     /** 
  15.      * @param args 
  16.      */
  17.     publicstaticvoid main(String[] args) throws Exception  
  18.     {  
  19.         JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();  
  20.         // 設定mail server
  21.         senderImpl.setHost("smtp.163.com");  
  22.         // 建立郵件訊息,傳送簡單郵件和html郵件的區別
  23.         MimeMessage mailMessage = senderImpl.createMimeMessage();  
  24.         MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage);  
  25.         // 設定收件人,寄件人
  26.         messageHelper.setTo("[email protected]");  
  27.         messageHelper.setFrom("[email protected]");  
  28.         messageHelper.setSubject("測試HTML郵件!");  
  29.         // true 表示啟動HTML格式的郵件
  30.         messageHelper  
  31.                 .setText(  
  32.                         "<html><head></head><body><h1>hello!!spring html Mail</h1></body></html>",  
  33.                         true);  
  34.         senderImpl.setUsername("username"); // 根據自己的情況,設定username
  35.         senderImpl.setPassword("password"); // 根據自己的情況, 設定password
  36.         Properties prop = new Properties();  
  37.         prop.put("mail.smtp.auth""true"); // 將這個引數設為true,讓伺服器進行認證,認證使用者名稱和密碼是否正確
  38.         prop.put("mail.smtp.timeout""25000");  
  39.         senderImpl.setJavaMailProperties(prop);  
  40.         // 傳送郵件
  41.         senderImpl.send(mailMessage);  
  42.         System.out.println("郵件傳送成功..");  
  43.     }  
  44. }  

3.傳送巢狀圖片的郵件
Email允許新增附件,也允許在multipart信件中內嵌資源。內嵌資源可能是你在信件中希望使用的影象,或者樣式表,但是又不想把它們作為附件。
  1. package net.xftzr.mail;  
  2. import java.io.File;  
  3. import java.util.Properties;  
  4. import javax.mail.internet.MimeMessage;  
  5. import org.springframework.core.io.FileSystemResource;  
  6. import org.springframework.mail.javamail.JavaMailSenderImpl;  
  7. import org.springframework.mail.javamail.MimeMessageHelper;  
  8. /** 
  9.  * 本類測試郵件中巢狀圖片 
  10.  *  
  11.  * @author sunny 
  12.  *  
  13.  */
  14. publicclass AttachedImageMail  
  15. {  
  16.     publicstaticvoid main(String[] args) throws Exception  
  17.     {  
  18.         JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();  
  19.         // 設定mail server
  20.         senderImpl.setHost("smtp.163.com");  
  21.         // 建立郵件訊息,傳送簡單郵件和html郵件的區別
  22.         MimeMessage mailMessage = senderImpl.createMimeMessage();  
  23.         // 注意這裡的boolean,等於真的時候才能巢狀圖片,在構建MimeMessageHelper時候,所給定的值是true表示啟用,
  24.         // multipart模式
  25.         MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,  
  26.                 true);  
  27.         // 設定收件人,寄件人
  28.         messageHelper.setTo("[email protected]");  
  29.         messageHelper.setFrom("[email protected]");  
  30.         messageHelper.setSubject("測試郵件中巢狀圖片!!");  
  31.         // true 表示啟動HTML格式的郵件
  32.         messageHelper.setText(  
  33.                 "<html><head></head><body><h1>hello!!spring image html mail</h1>"
  34.                         + "<img src=\"cid:aaa\"/></body></html>"true);  
  35.         FileSystemResource img = new FileSystemResource(new File("g:/123.jpg"));  
  36.         messageHelper.addInline("aaa", img);  
  37.         senderImpl.setUsername("username"); // 根據自己的情況,設定username
  38.         senderImpl.setPassword("password"); // 根據自己的情況, 設定password
  39.         Properties prop = new Properties();  
  40.         prop.put("mail.smtp.auth""true"); // 將這個引數設為true,讓伺服器進行認證,認證使用者名稱和密碼是否正確
  41.         prop.put("mail.smtp.timeout""25000");  
  42.         senderImpl.setJavaMailProperties(prop);  
  43.         // 傳送郵件
  44.         senderImpl.send(mailMessage);  
  45.         System.out.println("郵件傳送成功..");  
  46.     }  
  47. }  

說明:嵌入圖片<img src=\"cid:aaa\"/>,其中cid:是固定的寫法,而aaa是一個contentId。

4.傳送包含附件的郵件

  1. package net.xftzr.mail;  
  2. import java.io.File;  
  3. import java.util.Properties;  
  4. import javax.mail.internet.MimeMessage;  
  5. import org.springframework.core.io.FileSystemResource;  
  6. import org.springframework.mail.javamail.JavaMailSenderImpl;  
  7. import org.springframework.mail.javamail.MimeMessageHelper;  
  8. 相關推薦

    通過Spring Mail Api傳送郵件

    【Spring Mail API】 Spring Mail API都在org.springframework.mail及其子包org.springframework.mail.javamail中封裝,且只提供了郵件傳送的封裝。 SimpleMailMessage: 對郵件

    使用spring的JavaMailSender傳送郵件

    步驟:     一:pom.xml       <!-- java郵件 -->       <dependency>         &nb

    Centos7 開啟mail函式傳送郵件及sendmail啟動問題

    自從換了阿里雲伺服器之後,我也就沒有理過部落格的回覆評論郵件通知功能。前2天有朋友跟我說,之前評論都有郵件通知,現在怎麼沒有了。我想應該是沒有開始支援mail()函式的語言,VPS的好處就是自己可以隨便折騰。於是研究下怎麼開啟mail()函式,本文做個記錄,方便以後可能用到。 我的阿里雲伺服

    PHP中呼叫mail()函式傳送郵件所需sendmail的基本配置和html格式的郵件資訊

    首先從http://glob.com.au/sendmail上下載sendmail壓縮包;並將其解壓到D:盤中(一般最好不要解壓到C:盤,且目錄不要太長)。 設定一下PHP.ini檔案: [mail function] ; For Win32 only. ; http://

    Centos 7使用mail指令傳送郵件的安裝,除錯,測試

    Mail是cent7 用來發送郵件的指令,詳細不說,直接上操作。 系統版本:centos7x3.10.0-514.el7.x86_64 如果覺得自身帶的郵件以來包不放心,直接可以用rpm進行刪除。 #rpm -qa |grep mailx sendmail #rpm

    [php]mail函式傳送郵件(正文+附件+中文)

    <?php $from = "[email protected]"; $to = "[email protected], [email protected]"; $subject = "郵件主題"; $subject = "=?UTF-8

    mail命令傳送郵件

    (一)首先安裝ssmpt和mailutils: sudo apt-get install ssmtp mailutils (二)接下來編輯配置檔案sudo gedit /etc/ssmtp/ssmt

    php mail函式傳送郵件header過長

    今天用php的mail函式傳送一個郵件,其中header部分是用html拼出來的一個表格,但發出來之後會發現表格會有部分顯示不正常,比如"<tr><td>a</td><td>b</td><td>c<

    Spring+javamail+velocity傳送郵件

    最精做到一個專案需要用到郵箱驗證,所研究了一下 首先需要jar包: org.springframework.context.support-3.1.2.RELEASE.jar (封裝了javamail的相關api) mail.jar;   velocity-1.4.jar

    使用mail/mailx通過office365 SMTP傳送郵件

    Mailx是一個智慧郵件處理系統,提供POSIX mailx命令功能,提供MIME、IMAP、POP3、SMTP和S/MIME擴充套件,通過呼叫sendmail來發送郵件。 安裝mailx: # yum install mailx mailx語法 mailx [-BDdEFintv~] [-s sub

    Spring(非boot)通過ssl傳送郵件

    參考:https://blog.csdn.net/liguo9860/article/details/6874040   我這裡就說一下使用Spring的JavaMailSender如何實現 1. 配置JavaMailSender @Bean public JavaM

    用JAVA Spring Mail 傳送HTML格式的郵件,樣式丟失的問題

     QQ郵箱網頁版開啟HTML郵件是正常的,用PC版foxmail 或者 手機QQ郵箱APP開啟是不正常的,排版很亂。 主要原因: 使用郵件客戶端檢視郵件,哪怕只是在網頁上看郵件,你的郵件也不要用DIV去做,要用TABLE; 而且也不能用外部呼叫樣式,不能用內部頁面樣式,

    spring傳送郵件時遇到錯誤org.springframework.mail.MailAuthenticationException: Authentication failed;

    spring 傳送郵件時遇到異常org.springframework.mail.MailAuthenticationException org.springframework.mail.MailAuthenticationException: Authentication

    # 阿裏雲ECS通過mail發送郵件

    not geo Opens one rmi htm 阿裏雲 mod smtp服務 參考博文 面對疾風 因為阿裏雲默認將目的端口為TCP25的出現流量屏蔽了,所以改用465 ssl端口發送郵件。 yum安裝mailx [Allen@iZm5eh331inajbk110g28m

    javax.mail 傳送郵件(工具類)

    前言:注意自己郵箱賬號的授權碼 傳送不成功,要設定授權碼(勿掉坑裡) 1.座標 <dependency> <groupId>javax.mail</groupId> <artifactId&

    telnet通過smtp傳送郵件

    ////////////////////////////////////CMD指令////////////////////////////////////////////// cmd telnet smtp.163.com 25   or &nb

    通過javamailsenderimpl傳送郵件

    參考文章:http://blog.csdn.net/qq_33556185/article/details/51028952 import javax.mail.internet.MimeMessage; import org.springframework.beans.factory.anno

    jsp的mail.jar外掛傳送郵件出錯之一

    昨晚在測試專案的時候,用到了mail.jar傳送郵件,原來好好的,結果出錯: DEBUG: setDebug:JavaMail version 1.4ea DEBUG:getProvider()returning javax.mail.Provider[TRANSPORT,smtp,com.

    JSP如何利用 mail.jar 元件傳送郵件

    我們在註冊、找回密碼等驗證使用者身份時候,經常要用到郵件驗證碼功能。如下圖: JSP常見的郵件傳送是利用mail.jar外掛傳送(下載地址:點選這裡)。 接下來,我將詳細得給有需要的同志展示如何利用mail.jar外掛傳送郵件: 第一步:將mail.jar匯入到自己專案的lib

    傳送郵件javax.mail.MessagingException: 501 Syntax: HELO hostname

    問題 線上郵件傳送失敗,報異常javax.mail.MessagingException: 501 Syntax: HELO hostname 解決方案 //檢視機器hostname [admin@zyhy-10-1-0-16 ~]$ hostname //檢視host