1. 程式人生 > >java郵件提醒實現

java郵件提醒實現

【背景】

    最近做專案的時候,有這樣一個需求,因為專案中的流程是分級流轉審批的過程,所以當前人操作完成之後,需要程式的一個固定郵箱通過郵件通知下級相應人員進行處理,所以也就有了小編今天的這篇博文。

【操作步驟】

    1.引入activation.jar、commons-email-1.1.jar、mail.jar這三個jar包,百度搜索下載或者單擊此百度網盤連結(請單擊此連結下載)
    2.將共用的資訊放到配置檔案中(這裡只附上一個圖片,因為程式碼會將中文內容轉換為其它格式)
      注:下面的message1-7全部為郵件內容部分,這裡為了實現定製化將公共內容放到一個地方存放,才將其拆開;下面的host內容請按照你郵箱的地址查詢相關的host


    3.建立mail實體類,並通過靜態方法讀取配置檔案中的資訊
-
package com.gxt.common.vo;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * mail實體
 * @author mk
 *
 */
public class Mail {

	public static final String ENCODEING = "UTF-8";
	
	private static String host;	//伺服器地址
	private static String sender;	//發件人的郵箱
	private String receiver;//收件人的郵箱
	private static String name;	//發件人暱稱
	private static String username;//賬號
	private static String password;//密碼
	private static String subject;	//主題
	private  String message;	//詳情
	private static String message1;	//詳情1
	private static String message3;	//詳情3
	private static String message5;	//詳情5
	private static String message7;	//詳情7
	
	
	//將下面內容放到配置檔案mail.properties中,方便修改
	static{
		InputStream in = Mail.class.getResourceAsStream("/mail.properties");  
		  
        Properties p = new Properties();  
  
        try {
			p.load(in);
			host =p.getProperty("Host");
			sender =p.getProperty("sender");
			name =p.getProperty("name");
			username =p.getProperty("username");
			password =p.getProperty("password");
			subject =p.getProperty("subject");
			message1 =p.getProperty("message1");
			message3 =p.getProperty("message3");
			message5 =p.getProperty("message5");
			message7 =p.getProperty("message7");
		} catch (IOException e) {
			e.printStackTrace();
		} 
	}

	public static String getHost() {
		return host;
	}

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

	public static String getSender() {
		return sender;
	}

	public static void setSender(String sender) {
		Mail.sender = sender;
	}

	public String getReceiver() {
		return receiver;
	}

	public void setReceiver(String receiver) {
		this.receiver = receiver;
	}

	public static String getName() {
		return name;
	}

	public static void setName(String name) {
		Mail.name = name;
	}

	public static String getUsername() {
		return username;
	}

	public static void setUsername(String username) {
		Mail.username = username;
	}

	public static String getPassword() {
		return password;
	}

	public static void setPassword(String password) {
		Mail.password = password;
	}

	public static String getSubject() {
		return subject;
	}

	public static void setSubject(String subject) {
		Mail.subject = subject;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}

	public static String getMessage1() {
		return message1;
	}

	public static void setMessage1(String message1) {
		Mail.message1 = message1;
	}

	public static String getMessage3() {
		return message3;
	}

	public static void setMessage3(String message3) {
		Mail.message3 = message3;
	}

	public static String getMessage5() {
		return message5;
	}

	public static void setMessage5(String message5) {
		Mail.message5 = message5;
	}

	public static String getMessage7() {
		return message7;
	}

	public static void setMessage7(String message7) {
		Mail.message7 = message7;
	}
	
}
-

    4.建立工具類,呼叫jar包中的內容實現郵件傳送
-
package com.gxt.common.util;

import java.sql.Date;

import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;

import com.gxt.common.vo.Mail;
import com.miitgxt.common.util.ResultInfo;

/**
 * 郵件傳送工具類
 * @author mk
 *
 */
public class MailUtil {

	//傳送呼叫的方法
	public ResultInfo send(Mail mail){
		//定製化返回的內容
		ResultInfo result = new ResultInfo(false,"郵件傳送失敗請與管理員聯絡");
		//傳送email
		HtmlEmail email = new HtmlEmail();
		try{
			//System.out.println(mail.getHost()+"---"+mail.getSender()+"---"+mail.getName()+"---"+mail.getUsername()+"---"+mail.getPassword()+"---"+mail.getSubject());
			//這裡是SMTP傳送伺服器的名字:163的如下:“smtp.163.com”
			email.setHostName(mail.getHost());
			//字元編碼集的設定
			email.setCharset(Mail.ENCODEING);
			//收件人的郵箱
			email.addTo(mail.getReceiver());
			//傳送人的郵箱
			email.setFrom(mail.getSender(),mail.getName());
			//如果需要認證資訊的話,設定認證:使用者名稱-密碼。分別為發件人在郵件伺服器上的註冊名稱和密碼
			email.setAuthentication(mail.getUsername(), mail.getPassword());
			//要傳送的郵件主題
			email.setSubject(mail.getSubject());
			//要傳送的資訊,由於使用了HtmlEmail,可以在郵件內容中使用HTML標籤
			email.setMsg(mail.getMessage());
			//傳送
			email.send();
			 result.setStatus(true);
			return result;
		}catch(EmailException e){
			return result;
		}
	}
	
	//將郵件內容組裝的方法
	public ResultInfo setMail(String usermail, String message2 ,String message4){
		Mail mail = new Mail();
		mail.setReceiver(usermail); //接收人
		//放入配置檔案中的新增部分
		StringBuffer message = new StringBuffer();
		message.append(mail.getMessage1());
		message.append(message2);
		message.append(mail.getMessage3());
		message.append(message4);
		message.append(mail.getMessage5());
		Date datatime = new java.sql.Date(new java.util.Date().getTime());
		message.append(datatime.toString());
		message.append(mail.getMessage7());
		
		mail.setMessage(message.toString());
		MailUtil mailUtil =  new MailUtil();
		ResultInfo isstr = mailUtil.send(mail);
		
		return isstr;
		
	}
}
-

    5.寫一個main方法進行測試
-
	public static void main(String[] args) throws IOException {
		MailUtil mailUtil =  new MailUtil();
		ResultInfo aaa = mailUtil.setMail("[email protected]", "收件人姓名XXX", "郵件內容");
		if (aaa.isStatus()) {
			System.out.println("傳送成功");
		}else{
			System.out.println("傳送失敗");
		}
		
	}
-

    6.效果展示,如下圖


【思路擴充套件】

    感興趣的朋友可以通過反編譯工具去看jar中具體實現郵件傳送的程式碼哦O(∩_∩)O~

【總結感受】

    本文借鑑部落格:請單擊連結檢視
    在工作中,遇到相應的需求,然後解決它,這就是江湖,這就是江湖中的經驗
    在解決問題的過程中也讓自己進行了大量的思考,如何讓自己的程式碼擁有更好的複用性,如何讓自己的程式碼更加簡潔,如何讓自己的程式碼更加高效?
    另外小編還會去思考如何讓自己做的功能能夠更好的服務使用者,可能這一點是最重要的吧,所謂得使用者者得天下
    收拾行囊,繼續闖蕩自己的一個人的江湖啦O(∩_∩)O~

相關推薦

java郵件提醒實現

【背景】     最近做專案的時候,有這樣一個需求,因為專案中的流程是分級流轉審批的過程,所以當前人操作完成之後,需要程式的一個固定郵箱通過郵件通知下級相應人員進行處理,所以也就有了小編今天的這篇博文。 【操作步驟】     1.引入activation.jar、commo

java郵件介面實現

最近公司在開發一個專案,用到了以前沒接觸的介面。現在在這裡做下記錄。        1:引入jar包:mail.jar。        2:配置郵件地址(mail.properties) mail.smtp.auth = true mail.smtp.host = smtp

Java代碼實現發送郵件

int subject transport 用戶名 [] 身份認證 發送 args 文件創建 package com.ust.email; import java.io.File;import java.util.Date; import javax.activation.

Java郵件傳送的簡單實現

java郵件傳送:利用現有的郵件賬戶傳送郵件,比如說,我在網易註冊一個郵箱賬戶,通過JAVA操控,我可以不親自登入網易郵箱,讓程式自動的使用網易郵箱傳送郵件。這一機制被廣泛的用在註冊啟用和垃圾郵件

Java 基於JavaMail實現向QQ郵箱傳送郵件

需求 最近專案在做新聞爬蟲,想實現這個功能:爬蟲某個頁面失敗後,把這個頁面的 url 發到筆者的郵箱。最終實現的效果圖如下,後期可以加上過濾標籤、失敗狀態碼等,方便分類搜尋異常。 開發人員可以根據郵件裡的 url 和堆疊資訊,分析爬蟲失敗的原因。 是

AD賬號密碼過期郵件提醒-powershell實現--密碼加密(新增)

加密部分參考:http://www.bubuko.com/infodetail-1846894.html 首先將在某臺主機上上建立一個share folder,設定許可權為Everyone讀取,裡面將儲存加密後的密碼檔案,檔案命名為Password.txt。 新建一個加密

Java傳送郵件簡單實現以及問題的解決

利用Java傳送郵件的過程主要有一下步驟: 建立Session物件,配置屬性利用Session建立Message物件,然後設定發件人、收件人、郵件主題和正文利用Transport物件傳送郵件 需要的jar有2個:activation.jar和mail.jar 程式碼如下

Java 通過SMTP實現傳送QQ郵件

在eclipse中建立專案,並把javax.amil.jar和commons-email-1.5,jar複製到專案中連結:https://pan.baidu.com/s/1sQjA1GEpKi6IJJRGHKxjeA 密碼:4ene新增步驟:1.首先在專案下建立一個資料夾,儲

Jenkins 實現前端自動打包,自動部署程式碼及郵件提醒功能

在之前的公司,我們前端使用webpack構建專案,專案構建完成後,我們會使用ftp或linux的一些命令工具上傳我們的檔案到伺服器上,這種方式雖然是可以,但是最近面試的時候,人家會問我前端如何部署專案,我就說我們公司目前是這樣操作的,最後人家會感覺很low,最後總之總之沒有面試上。因此今天來給大家介紹下使用J

Delphi - Server Monitor開發並實現指定埠定時重新整理、重啟和郵件提醒等功能

專案背景   近期,總經辦郵件反饋考勤資料頻繁丟失,請IT排查其根本原因,並提供整改措施。   措不及防,這個專案當初並不是IT主導的,是裝置部採購,然後協同軟體供應商直接安裝、部署和除錯的,IT只是提供幾個資料庫表介面給供應商。然後我們就開始在裝置、總經辦、供應商之間相互扯皮,之所以扯皮的原因是,經過供應商

Java利用Redis實現消息隊列

.get keys rpo throws max del 鍵值 先進先出 instance 應用場景 為什麽要用redis?二進制存儲、java序列化傳輸、IO連接數高、連接頻繁 一、序列化   這裏編寫了一個java序列化的工具,主要是將對象轉化為byte數組,和根

Java通過 Socket 實現 TCP服務端(一個實例)

trac write 建立 回復 狀態 else 應用程序 字符 system 1 Java Socket簡介   所謂socket 通常也稱作”套接字“,用於描述IP地址和端口,是一個通信鏈的句柄。應用程序通常通過”套接字”向網絡發出請求或者應答網絡請求。Socket和S

RabbitMQ第二篇:java簡單的實現RabbitMQ

ech pre cer wait clas comm amqp cti 一次 前言:在這裏我將用java來簡單的實現rabbitMQ。下面我們帶著下面問題來一步步的了解和學習rabbitMQ。 1:如果消費者連接中斷,這期間我們應該怎麽辦 2:如何做到負載均衡 3:如何有效

【轉載】對一致性Hash算法,Java代碼實現的深入研究

困難 之前 存在 itl ger 正常 我不 操作 算法實現 原文地址:http://www.cnblogs.com/xrq730/p/5186728.html 一致性Hash算法 關於一致性Hash算法,在我之前的博文中已經有多次提到了,MemCache超詳細解讀一

[Java][Web]Request 實現轉發和 MVC 設計模式

寫入 頁面 str quest 表示 請求轉發 但是 write att String data = "aaaaa"; request.setAttribute("data",data); // 將數據存在 request request.getRequestDispat

java 遞歸實現平衡二叉樹

bsp get 實現 urn ole lean left current this public class 平衡二叉樹{ public class TreeNode { TreeNode left; TreeNode right;

對一致性Hash算法,Java代碼實現的深入研究

memcach 還原 情況 () 實用 target 強人 最壞情況 一致性hash 一致性Hash算法 關於一致性Hash算法,在我之前的博文中已經有多次提到了,MemCache超詳細解讀一文中"一致性Hash算法"部分,對於為什麽要使用一致性Hash算法、一致性Has

Java Map 怎樣實現Key 的唯一性?

存儲 new sha iterator int -m pareto center key 大家都知道。在Map和Set不可存在反復元素? 可是對於內部的細節我們並不了解。今天我們就一塊來 探討一下! 1 對於 HashMap HashSet 他們的底層數據結

root用戶登錄郵件提醒

root用戶登錄郵件提醒最後行添加vi /root/.bashrcdateTime=`date +%Y%m%d-%H:%M`echo "root login" |mail -s "$dateTime root login" [email protected]/* */本文出自 “Shell” 博客

java中隊列實現

col 出隊 基本操作 blog 現象 重要 alt else get 隊列的定義: 隊列(Queue)是只允許在一端進行插入,而在另一端進行刪除的運算受限的線性表。 (1)允許刪除的一端稱為隊頭(Front)。 (2)允許插入的一端稱為隊尾(Rear)。(3)當隊列中沒