【乾貨】使用Java傳送各種格式的郵件
測試可用:
有些重複程式碼沒有給註釋。類的方法作用自行檢視API瞭解,最後附上原始碼。
首先使用JavaMail的jar,官網可下載。
公共靜態的常量:
public final static String MAIL = "@sina.com"; // 郵箱格式
public final static String SEND_HOST = "smtp.sina.com"; // 郵箱傳送伺服器
public final static String ACCEPT_HOST = "pop.sina.com"; // 郵箱伺服器
public final static String SEND_USER = "xxxx"; // 使用者名稱
public final static String SEND_PWD = "xxxxx"; // 密碼
public final static String FROM_MAIL = SEND_USER + "@sina.com";// 傳送方郵箱地址
public final static String TO_MAIL = " [email protected]"; // 接收方郵箱地址
public final static String CC_MAIL = SEND_USER + MAIL; // 抄送方郵箱地址
public final static String BCC_MAIl = SEND_USER + MAIL; // 密送方郵箱地址
public final static String ENCODE = "UTF-8";
public static Date date = new Date();
使用java自帶的介面和類傳送文字格式郵件
Properties prop = new Properties(); prop.setProperty("mail.host", SEND_HOST); prop.setProperty("mail.transport.protocol", "smtp"); prop.setProperty("mail.smtps.ssl.enable", "true"); // prop.setProperty("mail.smtp.port", "25"); prop.setProperty("mail.smtp.auth", "true"); Session session = Session.getInstance(prop); //建立應用會話 Message message = new MimeMessage(session); //訊息摘要,是郵件的主體 message.setSubject("測試"); //設定主題 message.setText("你好!"); //郵件內容 message.setSentDate(new Date()); //傳送日期 message.setFrom(new InternetAddress(FROM_MAIL)); //傳送方 message.addRecipient(Message.RecipientType.TO, new InternetAddress(TO_MAIL)); //接受方 message.saveChanges(); //儲存郵件主體物件內容 Transport transport = session.getTransport(); //傳輸物件 transport.connect(SEND_HOST, FROM_MAIL, SEND_PWD); //連線伺服器中的郵箱 transport.sendMessage(message, message.getAllRecipients()); //傳送 transport.close(); //關閉傳輸 System.out.println("Successfully send mail to all user");
感覺自帶的介面方法比較麻煩,使用spring封裝的javamail,記的匯入spring相關包。
使用spring傳送文字格式的郵件,程式碼如下:
public static void sendTxtMail() throws MailException { JavaMailSenderImpl send = new JavaMailSenderImpl(); Properties prop = new Properties(); prop.setProperty("mail.transport.protocol", "smtp"); prop.setProperty("mail.host", SEND_HOST); prop.setProperty("mail.smtps.ssl.enable", "true"); prop.setProperty("mail.smtp.auth", "true"); send.setUsername(SEND_USER); send.setPassword(SEND_PWD); send.setJavaMailProperties(prop); SimpleMailMessage msg = new SimpleMailMessage(); msg.setFrom(FROM_MAIL); msg.setTo(TO_MAIL); msg.setReplyTo(FROM_MAIL); msg.setCc(CC_MAIL); msg.setBcc(BCC_MAIl); msg.setSentDate(date); msg.setSubject("傳送的文字格式郵件"); msg.setText("文字格式 測試成功!"); send.send(msg); System.out.println("Successfully send mail to the user");
使用spring的封裝方法傳送Html格式郵件 ,程式碼如下:
// 傳送Html格式郵件
public static void sendHtmlMail() throws Exception {
JavaMailSenderImpl send = new JavaMailSenderImpl();
Properties prop = new Properties();
prop.setProperty("mail.transport.protocol", "smtp");
prop.setProperty("mail.host", SEND_HOST);
prop.setProperty("mail.smtps.ssl.enable", "true");
prop.setProperty("mail.smtp.auth", "true");
send.setUsername(SEND_USER);
send.setPassword(SEND_PWD);
send.setJavaMailProperties(prop);
MimeMessage msg = send.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(msg, ENCODE);
helper.setFrom(FROM_MAIL);
helper.setTo(TO_MAIL);
helper.setReplyTo(FROM_MAIL);
helper.setCc(CC_MAIL);
helper.setBcc(BCC_MAIl);
helper.setSentDate(date);
helper.setSubject("傳送的HTML格式郵件");
String html = "<font size='5' color='red'>HTML格式測試成功!</font>";
helper.setText(html, true); // 郵件內容,引數true表示是html程式碼
send.send(msg);
System.out.println("Successfully send mail to the user");
使用spring的封裝方法傳送帶內嵌內容的Html格式郵件 ,程式碼如下:
// 傳送帶內嵌檔案的HTML格式郵件
public static void sendInlineMail() throws Exception {
// spring提供的郵件實現類
JavaMailSenderImpl send = new JavaMailSenderImpl();
Properties prop = new Properties();
prop.setProperty("mail.transport.protocol", "smtp"); // 設定郵件傳送協議
prop.setProperty("mail.host", SEND_HOST); // 郵件伺服器地址
prop.setProperty("mail.smtps.ssl.enable", "true"); // 郵件ssl驗證
prop.setProperty("mail.smtp.auth", "true"); // 郵件服務身份驗證
send.setUsername(SEND_USER); // 設定使用者名稱
send.setPassword(SEND_PWD); // 設定密碼
send.setJavaMailProperties(prop);
MimeMessage msg = send.createMimeMessage();
// 指定HTML編碼,引數true表示為multipart
MimeMessageHelper helper = new MimeMessageHelper(msg, true, ENCODE);
helper.setFrom(FROM_MAIL); // 傳送者郵箱
helper.setTo(TO_MAIL); // 接收者郵箱
helper.setReplyTo(FROM_MAIL); // 回覆郵箱
helper.setCc(CC_MAIL); // 抄送郵箱
helper.setBcc(BCC_MAIl); // 密送郵箱
helper.setSentDate(date); // 傳送日期
helper.setSubject("傳送的帶有內部檔案的HTML格式郵件");
String html = "<font size='5' color='red'>HTML格式測試成功!</font>"
+ "<img src ='cid:demoimg'>"; // cid是一個固定字首,demoimg是一個資源名稱
helper.setText(html, true); // 郵件內容,引數true表示是html程式碼
ClassPathResource resource = new ClassPathResource("col.jpg"); // 載入專案路徑下資源
helper.addInline("demoimg", resource); // 將資源繫結到demoimg上
send.send(msg); // 傳送郵件
System.out.println("Successfully send mail to the user");
}
使用spring的封裝方法傳送帶附件的郵件 ,程式碼如下:
// 傳送帶附件的郵件
public static void sendAttachmentMail() throws Exception {
// spring提供的郵件實現類
JavaMailSenderImpl send = new JavaMailSenderImpl();
Properties prop = new Properties();
prop.setProperty("mail.transport.protocol", "smtp"); // 設定郵件傳送協議
prop.setProperty("mail.host", SEND_HOST); // 郵件伺服器地址
prop.setProperty("mail.smtps.ssl.enable", "true"); // 郵件ssl驗證
prop.setProperty("mail.smtp.auth", "true"); // 郵件服務身份驗證
send.setUsername(SEND_USER); // 設定使用者名稱
send.setPassword(SEND_PWD); // 設定密碼
send.setJavaMailProperties(prop);
MimeMessage msg = send.createMimeMessage();
// 指定HTML編碼,引數true表示為multipart
MimeMessageHelper helper = new MimeMessageHelper(msg, true, ENCODE);
helper.setFrom(FROM_MAIL); // 傳送者郵箱
helper.setTo(TO_MAIL); // 接收者郵箱
helper.setReplyTo(FROM_MAIL); // 回覆郵箱
helper.setCc(CC_MAIL); // 抄送郵箱
helper.setBcc(BCC_MAIl); // 密送郵箱
helper.setSentDate(date); // 傳送日期
helper.setSubject("傳送帶有附件的郵件");
String html = "<font size='5' color='red'>附件測試成功!</font>";
helper.setText(html, true); // 郵件內容,引數true表示是html程式碼
String demo = "demo.docx";
ClassPathResource resource = new ClassPathResource(demo); // 載入專案路徑下資源
helper.addAttachment(MimeUtility.encodeWord(demo), resource); // 如果檔案是中文名,需要轉碼。
send.send(msg); // 傳送郵件
System.out.println("Successfully send mail to the user");
}
在測試之前記得將郵箱smtp、pop設定上,否者會報驗證錯誤或連線服務錯誤 即50X系列錯誤。
相關推薦
【乾貨】使用Java傳送各種格式的郵件
測試可用: 有些重複程式碼沒有給註釋。類的方法作用自行檢視API瞭解,最後附上原始碼。 首先使用JavaMail的jar,官網可下載。 公共靜態的常量: public final static Str
使用Java傳送各種格式的郵件
轉自:https://blog.csdn.net/u011031689/article/details/51326595 測試可用:  
【736c677c4】java的各種型別轉換,挺全
java型別轉換 Integer String Long Float Double Date 1如何將字串 String 轉換成整數 int? A. 有兩個方法: 1). int i = Integer.parseInt([String]); 或 i = Integ
【轉載】java 獲取路徑的各種方法
strong filepath 文件路徑 etc dex 讀取 workspace for class 轉載只供個人學習參考,查看請前往原出處:http://www.cnblogs.com/guoyuqiangf8/p/3506768.html 主要方法有: (1)、req
【轉】java將excel文件轉換成txt格式文件
gets ade app jar包 flush csdn substr fontsize index 在實際應用中,我們難免會遇到解析excel文件入庫事情,有時候為了方便,需要將excel文件轉成txt格式文件。下面代碼裏面提供對xls、xlsx兩種格式的
【javaMail】java傳送帶附件郵件
package com.example.mail; import com.sun.mail.util.MailSSLSocketFactory; import javax.activation.DataHandler; import javax.activation.Da
【Python】SMTP傳送郵件
Python SMTP傳送郵件 一、郵件的幾個要素 使用程式碼發郵件的好處 可以批量發郵件,減少人工勞動 可以自動,定時,報警,報告等需求 電子郵件的工作原理 簡單郵件傳輸協議(Simple Mail Transfer Protocol, SM
【乾貨】10道經典的java演算法之面試題
對於演算法題,大家都很熟悉,無論在企業中還是在面試的時候,演算法依然是考研我們的一個標準. 根據實際情況,大家可能會認為 公司裡幾乎用不到演算法。我覺得這種說法是片面的。我們在熟練寫一段程式碼的時候,如果對其進行用優雅的方式實現出來,這就是演算法。個人對演算法的理解: 演算法只是解決問題
【網路】JAVA Socket 實現HTTP與HTTPS客戶端傳送POST與GET方式請求
JAVA Socket 實現HTTP與HTTPS客戶端傳送POST與GET方式請求 哇,一看標題怎麼這麼長啊,其實意思很簡單,哥討厭用HTTP Client做POST與GET提交 覺得那個畢竟是別人寫得API庫,所以我就自己實現了一個簡單的HTTP客戶端,支援POST 方
BAT面試Java崗必備併發程式設計【乾貨】——導圖+題目+答案+分享
浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>
【轉】java提高篇(二)-----理解java的三大特性之繼承
logs 了解 向上轉型 one 調用 adding nbsp eight 基礎 【轉】java提高篇(二)-----理解java的三大特性之繼承 原文地址:http://www.cnblogs.com/chenssy/p/3354884.html 在《Thi
【轉】Java技術棧
健全 區別 hadoop let 原因 view eba pdf 觀察者 1 java基礎: 1.1 算法 1.1 排序算法:直接插入排序、希爾排序、冒泡排序、快速排序、直接選擇排序、堆排序、歸並排序、基數排序 1.2 二叉查找樹、紅黑樹、B樹、B+樹、LSM樹(分別有對
【分享】Java後臺開發精選知識圖譜
僅支持 jqgrid lai content 結果集 完全 異常處理 分布式服務 list 地址 引言: 學習一個新的技術時,其實不在於跟著某個教程敲出了幾行、幾百行代碼,這樣你最多只能知其然而不知其所以然,進步緩慢且深度有限,最重要的是一開始就對整個學習路線有宏觀、簡潔的
【Servlet】Java Servet Filter 過濾器
退出方法 efi rlogin file submit ati 姓名 ner lan Filter的設計思想Filter是一種AOP的設計思想 : 面向切面下面這是一個使用filter的登錄案例:我們通過一張圖片理解理解filer面向切面下面是項目的結構:下面是jsp文件:
1000行代碼徒手寫正則表達式引擎【1】--JAVA中正則表達式的使用
基礎上 unicode 要求 [1] 分配 find 通過 images char 簡介: 本文是系列博客的第一篇,主要講解和分析正則表達式規則以及JAVA中原生正則表達式引擎的使用。在後續的文章中會涉及基於NFA的正則表達式引擎內部的工作原理,並在此基礎上用1000行左右
【異常】java.lang.IllegalArgumentException: Cannot locate declared field class org.apache.http.impl.client.HttpClientBuilder.dnsResolver 的解決方案
pcl group lan cnblogs cat resolv artifact exceptio 網頁 起因:使用htmlunit爬取外部網頁的時候遇到這個異常:java.lang.IllegalArgumentException: Cannot locate decl
【轉載】Java中Comparable和Comparator比較
import 比較器 todo itl 復制代碼 ack div array open 【本文轉自】http://www.cnblogs.com/skywang12345/p/3324788.html Comparable 簡介 Comparable 是排序接口。 若一
【轉載】JAVA多線程讀取、操作List集合
線程 nbsp static 一點 stat lang 素數 param 應用 本文轉載自:http://blog.csdn.net/wang1989cs/article/details/47663565 import java.util.ArrayList; impor
Python自動化開發課堂筆記【Day14】 - Java Script
空格 local rand substr 初始 find blog 瀏覽器支持 elif JavaScript的基礎 1. JS的引入方式 1 直接編寫 <script> alert(‘hello yuan‘) </scr
【轉】文件各種上傳,離不開的表單
dal 不變 沒有 each post str 線程 order bmi 閱讀目錄 利用表單實現文件上傳 表單異步上傳(jquery.form插件) 模擬表單數據上傳(FormData) 分片上傳 使用HTML5 拖拽、粘貼上傳 上傳插件(WebUploader