1. 程式人生 > >【乾貨】使用Java傳送各種格式的郵件

【乾貨】使用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           測試可用:     

736c677c4java各種型別轉換,挺全

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兩種格式的

javaMailjava傳送帶附件郵件

package com.example.mail; import com.sun.mail.util.MailSSLSocketFactory; import javax.activation.DataHandler; import javax.activation.Da

PythonSMTP傳送郵件

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 地址 引言: 學習一個新的技術時,其實不在於跟著某個教程敲出了幾行、幾百行代碼,這樣你最多只能知其然而不知其所以然,進步緩慢且深度有限,最重要的是一開始就對整個學習路線有宏觀、簡潔的

ServletJava 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