1. 程式人生 > >javaMail 的郵件傳送包括了抄送(CC),密送(BCC)採用springBoot

javaMail 的郵件傳送包括了抄送(CC),密送(BCC)採用springBoot

首先加程式碼配置檔案來一個

mail.properties

mail.smtp.host=smtp.qq.com

mail.smtp.port=465

mail.smtp.SSLport=587

mail.smtp.starttlsEnable=true

mail.smtp.auth=true

[email protected]

mail.smtp.password=qrqzbcfslyhaai

mail.smtp.timeout=50000

mail.smtp.connectiontimeout=50000

mail.smtp.nickname=ewe

我使用的是騰訊qq郵箱

首先要去騰訊qq的設定===》賬戶》》開通授權碼,第三方登陸需要授權碼當成密碼使用

然後在springboot引入這個配置檔案

package com.ewe.core.utils;



import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Properties;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;


import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

import com.ewe.core.datasource.TransactionAspect;
import com.ewe.user.model.BatchSendMessage;
@Component
@ConfigurationProperties(prefix="mail.smtp")
@PropertySource("mail.properties")
public class MailUtil {
	//("${mail.smtp.host}")
	private String host;
	//("${mail.smtp.port}")
	private String port;
	//("${mail.smtp.SSLport}")
	private String SSLport;
	//("${mail.smtp.starttlsEnable}")
	private String starttlsEnable;
	//("${mail.smtp.auth}")
	private String auth;
	//("${mail.smtp.connectiontimeout}")
	private String connectiontimeout;
	//("${mail.smtp.account}")
	private String account;
	//("${mail.smtp.password}")
	private String password;
	//("${mail.smtp.timeout}")
	private String timeout;
	
    private String nickname ="ewe";//傳送者,顯示的發件人名字
	protected static Log LOGGER = LogFactory.getLog(MailUtil.class);
	 //帶CC(抄送)的郵件傳送
    public boolean sendSSLEmailWithCC(List<String> listEmails, List<String>  cc, String title, String content ,List<String> bcc) throws Exception {
    	LOGGER.info("開始傳送郵件,email==>"+listEmails+",title==>"+title);
    	Properties props = System.getProperties();
        props.put("mail.smtp.host", host);
        // 指定協議  
        props.put("mail.transport.protocol", "smtp");  
        props.put("mail.smtp.port", SSLport);
        props.put("mail.smtp.starttls.enable", starttlsEnable);
        
        props.put("mail.smtp.auth", auth);
        props.put("mail.smtp.connectiontimeout", connectiontimeout);
        props.put("mail.smtp.timeout", timeout);
        props.put("mail.smtp.debug", true);
        Transport transport = null;
        Session session = Session.getDefaultInstance(props, null);
        transport = session.getTransport("smtp");
        transport.connect(host, account, password);
        MimeMessage msg = new MimeMessage(session);
        msg.setSentDate(new Date());
        InternetAddress fromAddress = new InternetAddress(account,nickname);
        msg.setFrom(fromAddress);
        InternetAddress[] toAddress = new InternetAddress[listEmails.size()];
        for(int k = 0;k<listEmails.size();k++){
        	String emailAddress = listEmails.get(k);
        	new InternetAddress(emailAddress);
        		toAddress[k]=new InternetAddress(emailAddress);
        }
        LOGGER.debug("當前需要傳送郵件的地址資訊============>{}"+Arrays.deepToString(toAddress));
        msg.addRecipients(Message.RecipientType.TO, toAddress);
        
        //增加CC功能
        if(cc != null) {
        	InternetAddress[] ccAddress = new InternetAddress[cc.size()];
        	for(int k = 0;k<cc.size();k++){
        		String emailAddress = cc.get(k);
        		new InternetAddress(emailAddress);
        			ccAddress[k]=new InternetAddress(emailAddress);
        	}
        	msg.addRecipients(Message.RecipientType.CC, ccAddress);
        }
        //增加BCC功能
        if(bcc != null) {
        	InternetAddress[] bccAddress = new InternetAddress[bcc.size()];
        	for(int k = 0;k<bcc.size();k++){
        		String emailAddress = bcc.get(k);
        		new InternetAddress(emailAddress);
        			bccAddress[k]=new InternetAddress(emailAddress);
        	}
        	msg.addRecipients(Message.RecipientType.BCC, bccAddress);
        }
        msg.setSubject(title, "UTF-8");  
        //傳送文字郵件
        msg.setContent(content, "text/html; charset=utf-8");
        transport.sendMessage(msg, msg.getAllRecipients());
        LOGGER.info("郵件已傳送");
        return true;
    }

	public String getHost() {
		return host;
	}

	public void setHost(String host) {
		this.host = host;
	}

	public String getPort() {
		return port;
	}
	public void setPort(String port) {
		this.port = port;
	}
	public String getSSLport() {
		return SSLport;
	}
	public void setSSLport(String sSLport) {
		SSLport = sSLport;
	}
	public String getStarttlsEnable() {
		return starttlsEnable;
	}
	public void setStarttlsEnable(String starttlsEnable) {
		this.starttlsEnable = starttlsEnable;
	}
	public String getAuth() {
		return auth;
	}
	public void setAuth(String auth) {
		this.auth = auth;
	}
	public String getConnectiontimeout() {
		return connectiontimeout;
	}
	public void setConnectiontimeout(String connectiontimeout) {
		this.connectiontimeout = connectiontimeout;
	}
	public String getAccount() {
		return account;
	}
	public void setAccount(String account) {
		this.account = account;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getTimeout() {
		return timeout;
	}
	public void setTimeout(String timeout) {
		this.timeout = timeout;
	}
	public static Log getLOGGER() {
		return LOGGER;
	}
	public static void setLOGGER(Log lOGGER) {
		LOGGER = lOGGER;
	}

	public String getMailTitle() {
		return nickname;
	}

	public void setMailTitle(String nickname) {
		this.nickname = nickname;
	}

    
    
}
測試可用

依賴maven加的是

		 <!-- email -->
		<dependency>
			<groupId>com.sun.mail</groupId>
			<artifactId>javax.mail</artifactId>
			<version>1.5.4</version>
		</dependency>

裡面的一些port 是不加密 SSLport是加密的

相關推薦

javaMail郵件傳送包括抄送CCBCC採用springBoot

首先加程式碼配置檔案來一個 mail.properties mail.smtp.host=smtp.qq.com mail.smtp.port=465 mail.smtp.SSLport=587 mail.smtp.starttlsEnable=true mail.

通過javaMail傳送郵件可選新增多個收件人抄送多個附件,超實用

        自己通過學習多人的程式碼,並整理了一個簡單,呼叫方便的通過javaMail傳送郵件。只需填寫發件郵箱地址,密碼;收件人地址,附件,選擇是否儲存,設定自己傳送郵件時的暱稱就ok了。程式碼自動匹配設定smtp服務地址和埠。    傳送郵件需要郵箱地址和密碼,開啟P

c#傳送郵件抄送群發附件

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net.Mail; using System.Net.Mime; using System.Text; using

阿里雲ECS禁用25埠導致JavaMail郵件傳送失敗

專案需要在阿里雲ECS上將每日的簡易彙總資訊通過郵件傳送出來,這裡使用的JavaMail預設的傳送埠是25,而阿里雲出於伺服器安全性考慮偏偏25埠是不開放的,導致郵件伺服器連線超時傳送失敗,報錯如下: MailSendException: Mail server

javaMail郵件傳送

MailAuthenticator.java package com.sunrise.jop.common.mail; import javax.mail.Authenticator; import javax.mail.PasswordAuthentication;

javamail郵件傳送例子

public class EmailTask{        // Session used by the javamail classes    private Session session;        // List of messages郵件傳送資訊物件列表    private List<

關於javamail郵件傳送地址錯誤和判斷是否傳送成功的問題

使用javamail做傳送郵件功能的一些問題,這裡寫出來給大家分享: 問題1;如何判斷郵件是否傳送成功     使用try catch捕獲傳送郵件程式碼的,如果出現messageException異常,郵件傳送失敗     一下程式碼是我封裝過的複合郵件的傳送功能

javamail 郵件傳送

1.) 是用javamail包; 2) 在發件人郵箱的設定中開啟POP3/SMTP/IMAP import java.util.Properties; import javax.mail.Message; import javax.mail.Session; impor

jenkins郵件傳送

jenkins郵件傳送不了的,請修改Jenkins主目錄下面jenkins.model.JenkinsLocationConfiguration.xml 中的adminAddress節點,改成你需要用

[您有新的未分配科技點]博弈論進階:似乎不那麽恐懼…… SJ定理簡單的基礎模型

裏的 如果 cnblogs 經典 ant 控制 nim osi 取石子 這次,我們來繼續學習博弈論的知識。今天我們會學習更多的基礎模型,以及SJ定理的應用。 首先,我們來看博弈論在DAG上的應用。首先來看一個小例子:在一個有向無環圖中,有一個棋子從某一個點開始一直向它的出點

大三筆記困擾一下午的bug居然是路徑問題

19號在寫測試ajax與controller互動時,一個bug困擾了我。 先貼程式碼。 index.jsp <head> <title>開發中......</title> <script type="text/javascript" src=

部署成功,終於看到夢寐以求似曾相識的介面哈哈。工欲善其事必先利其器

大坑:關於,用了nginx不需要用這個設定了,因為json是自己拼接的不是標準json //linux設定跨域 本地不需要加跨域的設定 //Vue.http.options.emulateJSO

介紹NPTL 經典--詮釋執行緒的概念以及linux排程單位

                POSIX Thread Library (NPTL)使Linux核心可以非常有效的執行使用POSIX執行緒標準寫的程式。這裡有一個測試資料,在32位機下,NPTL成功啟動100000個執行緒只用了2秒,而不使用NPTL將需要大約15分鐘左右的時間。歷史在核心2.6以前的排程實

機器人行走 * 某少年宮引進一批機器人小車。可以接受預先輸入的指令按指令行動。小車的基本動作很簡單只有3種:左轉記為L),右轉記為R),向前走若干釐米直接記數字。 例如我們

/** * 某少年宮引進了一批機器人小車。可以接受預先輸入的指令,按指令行動。小車的基本動作很簡單,只有3種:左轉(記為L),右轉(記為R),向前走若干釐米(直接記數字)。 例如,我們可以對小車輸入如下的指令: 15L10R5LRR10R20 則,小車先

機器人行走 某少年宮引進一批機器人小車。可以接受預先輸入的指令按指令行動。小車的基本動作很簡單 只有3種:左轉記為L),右轉記為R),向前走若干釐米直接記數字

/*機器人行走 * 【程式設計題】(滿分18分) 某少年宮引進了一批機器人小車。可以接受預先輸入的指令,按指令行動。小車的基本動作很簡單, 只有3種:左轉(記為L),右轉(記為R),向前走若干釐米(直接記數字)。 例如,我們可以對小車輸入如下的指令

PyQt4 模擬記事本基本功能保存打開文件

int .sh idt img 問題 top 我們 文件 pyqt 1. 默認【保存】按鈕enable 2. 修改文本的內容後,【enable】 3. 解決字符亂碼問題:utf-8 # -*- coding: utf-8 -*- import sys from PyQt

linux基礎第七天nfs服務計劃任務crond服務

文件共享 開發 dns sunday 6.2 exe eboot tree -s nfs服務 ===============服務端 介紹:   NFS 是Network File System的縮寫,即網絡文件系統。一種使用於分散式文件系統的協定,由Sun公司開發,於198

卅川的狀態機之路創作中不定時上傳

rom 不同的 大學 核心 追溯 選擇 有限狀態機 span 任務 川的第一篇幹貨,將從講述FSM(有限狀態機)開始。 川第一次接觸狀態機這種東西,還得追溯到剛到暢遊工作,破解了別的遊戲的代碼(遊戲程序就是這麽沒節操和底線,嗯!)才知道有這麽個東西的。雖然大學學習過相

簽入代碼新建分支新建推拉請求關聯工作項卻找不到自己需要的工作項

一點 但是 spa 由於 signed and esc 使用手冊 play 問題描述TFS 2017在用戶體驗方面,相比之前的版本已經做了非常大的提升。由於變化大,使用手冊和文檔(特別是中文)的更新不及時,在使用過程中用戶往往存在許多困惑。昨天我在頁面中簽入代碼,同時需要關

Source Insight 中文註釋為亂碼解決辦法完美解決一鍵搞定【轉】

ash save sys lan sim edit ext pan character 轉自:http://blog.csdn.net/bjarnecpp/article/details/70174752 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 S