1. 程式人生 > >java實現郵件傳送, 抄送及多附件傳送

java實現郵件傳送, 抄送及多附件傳送

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

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import
javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.mail.internet.MimeUtility; /** * 郵件管理器 * java 實現郵件的傳送, 抄送及多附件 * @author zhuxiongxian * @version
1.0 * @created at 2016年10月8日 下午3:52:11 */
public class EmailManager { public static String username = "[email protected]"; // 服務郵箱(from郵箱) public static String password = "yourpassword"; // 郵箱密碼 public static String senderNick = "XX科技"; // 發件人暱稱 private Properties props; // 系統屬性 private
Session session; // 郵件會話物件 private MimeMessage mimeMsg; // MIME郵件物件 private Multipart mp; // Multipart物件,郵件內容,標題,附件等內容均新增到其中後再生成MimeMessage物件 private static EmailManager instance = null; public EmailManager() { props = System.getProperties(); props.put("mail.smtp.auth", "true"); props.put("mail.transport.protocol", "smtp"); props.put("mail.smtp.host", "smtp.exmail.qq.com"); props.put("mail.smtp.port", "25"); props.put("username", username); props.put("password", password); // 建立會話 session = Session.getDefaultInstance(props); session.setDebug(false); } public static EmailManager getInstance() { if (instance == null) { instance = new EmailManager(); } return instance; } /** * 傳送郵件 * @param from 發件人 * @param to 收件人 * @param copyto 抄送 * @param subject 主題 * @param content 內容 * @param fileList 附件列表 * @return */ public boolean sendMail(String from, String[] to, String[] copyto, String subject, String content, String[] fileList) { boolean success = true; try { mimeMsg = new MimeMessage(session); mp = new MimeMultipart(); // 自定義發件人暱稱 String nick = ""; try { nick = javax.mail.internet.MimeUtility.encodeText(senderNick); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } // 設定發件人 // mimeMsg.setFrom(new InternetAddress(from)); mimeMsg.setFrom(new InternetAddress(from, nick)); // 設定收件人 if (to != null && to.length > 0) { String toListStr = getMailList(to); mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toListStr)); } // 設定抄送人 if (copyto != null && copyto.length > 0) { String ccListStr = getMailList(copyto); mimeMsg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(ccListStr)); } // 設定主題 mimeMsg.setSubject(subject); // 設定正文 BodyPart bp = new MimeBodyPart(); bp.setContent(content, "text/html;charset=utf-8"); mp.addBodyPart(bp); // 設定附件 if (fileList != null && fileList.length > 0) { for (int i = 0; i < fileList.length; i++) { bp = new MimeBodyPart(); FileDataSource fds = new FileDataSource(fileList[i]); bp.setDataHandler(new DataHandler(fds)); bp.setFileName(MimeUtility.encodeText(fds.getName(), "UTF-8", "B")); mp.addBodyPart(bp); } } mimeMsg.setContent(mp); mimeMsg.saveChanges(); // 傳送郵件 if (props.get("mail.smtp.auth").equals("true")) { Transport transport = session.getTransport("smtp"); transport.connect((String)props.get("mail.smtp.host"), (String)props.get("username"), (String)props.get("password")); // transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO)); // transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.CC)); transport.sendMessage(mimeMsg, mimeMsg.getAllRecipients()); transport.close(); } else { Transport.send(mimeMsg); } System.out.println("郵件傳送成功"); } catch (MessagingException e) { e.printStackTrace(); success = false; } catch (UnsupportedEncodingException e) { e.printStackTrace(); success = false; } return success; } /** * 傳送郵件 * @param from 發件人 * @param to 收件人, 多個Email以英文逗號分隔 * @param cc 抄送, 多個Email以英文逗號分隔 * @param subject 主題 * @param content 內容 * @param fileList 附件列表 * @return */ public boolean sendMail(String from, String to, String cc, String subject, String content, String[] fileList) { boolean success = true; try { mimeMsg = new MimeMessage(session); mp = new MimeMultipart(); // 自定義發件人暱稱 String nick = ""; try { nick = javax.mail.internet.MimeUtility.encodeText(senderNick); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } // 設定發件人 // mimeMsg.setFrom(new InternetAddress(from)); mimeMsg.setFrom(new InternetAddress(from, nick)); // 設定收件人 if (to != null && to.length() > 0) { mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); } // 設定抄送人 if (cc != null && cc.length() > 0) { mimeMsg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc)); } // 設定主題 mimeMsg.setSubject(subject); // 設定正文 BodyPart bp = new MimeBodyPart(); bp.setContent(content, "text/html;charset=utf-8"); mp.addBodyPart(bp); // 設定附件 if (fileList != null && fileList.length > 0) { for (int i = 0; i < fileList.length; i++) { bp = new MimeBodyPart(); FileDataSource fds = new FileDataSource(fileList[i]); bp.setDataHandler(new DataHandler(fds)); bp.setFileName(MimeUtility.encodeText(fds.getName(), "UTF-8", "B")); mp.addBodyPart(bp); } } mimeMsg.setContent(mp); mimeMsg.saveChanges(); // 傳送郵件 if (props.get("mail.smtp.auth").equals("true")) { Transport transport = session.getTransport("smtp"); transport.connect((String)props.get("mail.smtp.host"), (String)props.get("username"), (String)props.get("password")); transport.sendMessage(mimeMsg, mimeMsg.getAllRecipients()); transport.close(); } else { Transport.send(mimeMsg); } System.out.println("郵件傳送成功"); } catch (MessagingException e) { e.printStackTrace(); success = false; } catch (UnsupportedEncodingException e) { e.printStackTrace(); success = false; } return success; } public String getMailList(String[] mailArray) { StringBuffer toList = new StringBuffer(); int length = mailArray.length; if (mailArray != null && length < 2) { toList.append(mailArray[0]); } else { for (int i = 0; i < length; i++) { toList.append(mailArray[i]); if (i != (length - 1)) { toList.append(","); } } } return toList.toString(); } public static void main(String[] args) { String from = username; String[] to = {"[email protected]", "[email protected]"}; String[] copyto = {"[email protected]"}; String subject = "測試一下"; String content = "這是郵件內容,僅僅是測試,不需要回復."; String[] fileList = new String[3]; fileList[0] = "d:/zxing.png"; fileList[1] = "d:/urls.txt"; fileList[2] = "d:/surname.txt"; EmailManager.getInstance().sendMail(from, to, copyto, subject, content, fileList); } }

相關推薦

java實現郵件傳送 抄送附件傳送

import java.io.UnsupportedEncodingException; import java.util.Properties; import javax.activation.DataHandler; import javax.ac

Java實現郵件傳送(傳統方式)

package jl.bh.shy.utils; import java.util.Properties; import javax.mail.Address; import javax.mail.Session; import javax.mail.Transport; impor

使用java實現郵件傳送功能(已封裝)

現如今,用郵件傳送訊息的人越來越少,可是並不影響我們學習java。 以下給大家帶來自己寫的封裝類,可以直接使用。 首先,需要jar包: 普通javaweb專案:mail.jar maven管理專案:  <dependency>     &

通過dos命令方式運用javac、java、jar實現Java檔案的編譯執行打包的完整過程

環境配置一定要配好!!! 編寫一個簡單的HelloWorld.java: package com.bnusri; public class HelloWorld { public static void main(String[] args) { // TODO

Java實現郵件傳送(很簡單)

Java實現郵件傳送,需要指定郵件伺服器,和自己的郵箱賬號和密碼,謹記 自己的郵箱必須得到到客戶端授權碼,尤其是新開的郵箱,具體看程式碼,包括附件傳送 public class EmailUtils { private static String from = ""; //郵箱賬號 p

java實現郵件傳送準備工作(前期配置)

       本文主要用的郵件客戶端是:office 2007的outlook,伺服器是apache-james-2.3.2,首先我們來配置一下這個james伺服器:        1.將james伺

java實現郵件傳送驗證碼

java實現郵件傳送驗證碼    建議不要用qq郵箱,我使用qq郵箱直接一直給我報530錯誤,我一直認為我程式碼寫的有錯誤或者POP3/SMTP服務沒弄好。所以建議註冊個別的郵箱,我就申請了個網易163郵箱瞬間就好了。所以去申請個別的郵箱吧。   用郵

迪傑斯特拉演算法處理無向圖中最短路徑的(dijkstra)Java實現(指定兩點求最短距離路徑)

其實不是原創哈,我寫不出來。       如何求圖中V0到V5的最短路徑呢?         java實現的方式如下:         第一步,根據圖來建立權值矩陣:        int[][] W = {      {  0,   1,   4,  -1,  -

java實現郵件附件傳送功能

需要引用的pom <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</art

java 實現郵件傳送

import java.util.Properties; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import java

Java 實現緩存一個線程存一個線程取

override adt oid com read block tst ktr urn 緩存類: package com.zit.test; import java.util.concurrent.BlockingDeque; import java.uti

JAVA實現郵件驗證(註冊功能中使用)

原始碼: 連結:https://pan.baidu.com/s/1iSRybqDdzYU8apEs1OtQBw 提取碼:q0gb  易郵 and foxmail 連結:https://pan.baidu.com/s/1woOxn-UjmoALCQDjFuGAQQ&n

java實現xml格式化不使用現有的xml庫

如圖示: public class test { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new S

java 實現的excel資料匯入匯入模板下載

/**      * 下載匯入資料模板      * @param response      * @param redirectAttributes      *

Spring Boot實現郵件服務附常見郵箱的配置

  1. pom.xml檔案中引入依賴      <dependency>      <groupId>org.springframework.boot</groupId>      <artifactId>spring-boot-starter-mail<

Java——用Java實現氣泡排序選擇排序,快速排序和二分查詢

在學習C語言時,就有講過這三個排序演算法和二分查詢的演算法。 以下是用Java來實現氣泡排序(Bubble Sort)演算法,選擇排序(Selection Sort),快速排序(Quick Sort)和二分查詢(Binary Search) package pra_07;

Java——實現氣泡排序選擇排序快速排序和二分查詢

在學習C語言時,對排序演算法和二分查詢有一定的理解並進行了實現。 不過打算用Java重新實現一下氣泡排序(Bubble Sort),選擇排序(Selection Sort),快速排序(Quick Sort)和二分查詢(binary_search)。 package pra

一個用Java實現密碼演算法使用socket引發的血案

public static void main(String[] args) throws IOException, ParseException { ServerSocket serverSocket = new ServerSocket(1

二叉搜尋樹轉換為雙向連結串列的Java實現 出現的一些問題解決

題目 二叉搜尋樹轉換為雙向排序連結串列,要求不能新增任何新的結點,只能調整樹中節點的指向。 思路 二叉搜尋樹的左子樹中結點的值總是小於根結點,右子樹中結點的值總是大於根結點,所以二叉搜尋樹的中序遍歷結果就是我們最終想要得到的連結串列順序,如圖1: 所以我們在轉

java實現佇列MyQueue底層使用連結串列實現

/** * 佇列的介面 * 佇列是一種先進先出的資料結構 * 佇列支援的操作: * 判斷佇列是否為空 * 判斷佇列是否已經滿了 * 檢視佇列已經有多少元素 * 將一個元素入隊 * 將一個元素出隊 * 檢視隊頭的元素,但不出隊 * 佇列在底層可