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


    6.效果展示,如下图


【思路扩展】

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

【总结感受】

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 51
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

创业之路&下一个五年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值