java邮件提醒实现

来源:互联网 发布:淘宝商家微淘怎么设置 编辑:程序博客网 时间:2024/05/21 19:30

【背景】

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

【操作步骤】

    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;//详情1private static String message3;//详情3private static String message5;//详情5private 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,"邮件发送失败请与管理员联系");//发送emailHtmlEmail 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~
1 0
原创粉丝点击