java邮件提醒实现

2017-01-14 19:44:52来源:CSDN作者:u013030601人点击

第七城市

【背景】

    最近做项目的时候,有这样一个需求,因为项目中的流程是分级流转审批的过程,所以当前人操作完成之后,需要程序的一个固定邮箱通过邮件通知下级相应人员进行处理,所以也就有了小编今天的这篇博文。

【操作步骤】

    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("mk740474106@163.com", "收件人姓名XXX", "邮件内容");		if (aaa.isStatus()) {			System.out.println("发送成功");		}else{			System.out.println("发送失败");		}			}-


    6.效果展示,如下图


【思路扩展】

    感兴趣的朋友可以通过反编译工具去看jar中具体实现邮件发送的代码哦O(∩_∩)O~

【总结感受】

    本文借鉴博客:请单击链接查看
    在工作中,遇到相应的需求,然后解决它,这就是江湖,这就是江湖中的经验
    在解决问题的过程中也让自己进行了大量的思考,如何让自己的代码拥有更好的复用性,如何让自己的代码更加简洁,如何让自己的代码更加高效?
    另外小编还会去思考如何让自己做的功能能够更好的服务用户,可能这一点是最重要的吧,所谓得用户者得天下
    收拾行囊,继续闯荡自己的一个人的江湖啦O(∩_∩)O~
第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台