java邮件提醒实现

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

【背景】


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


【操作步骤】


   1.引入activation.jar、commons-email-1.1.jar、mail.jar这三个jar包,百度搜索下载或者单击此百度网盘链接(请单击此链接下载)

   2.将共用的信息放到配置文件中(这里只附上一个图片,因为代码会将中文内容转换为其它格式)

     注:下面的message1-7全部为邮件内容部分,这里为了实现定制化将公共内容放到一个地方存放,才将其拆开;下面的host内容请按照你邮箱的地址查询相关的host

20170114172348949.jpg


   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.效果展示,如下图


20170114172650387.jpg


【思路扩展】


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


【总结感受】


   本文借鉴博客:请单击链接查看

   在工作中,遇到相应的需求,然后解决它,这就是江湖,这就是江湖中的经验

   在解决问题的过程中也让自己进行了大量的思考,如何让自己的代码拥有更好的复用性,如何让自己的代码更加简洁,如何让自己的代码更加高效?

   另外小编还会去思考如何让自己做的功能能够更好的服务用户,可能这一点是最重要的吧,所谓得用户者得天下

   收拾行囊,继续闯荡自己的一个人的江湖啦O(∩_∩)O~

相关文章
|
Java
Java Email邮件阿里云发不了怎么处理
最近升级了一下SpringBoot的版本,结果发现之前工作的好好的邮件突然罢工了,罢工的原因还不止一个,接下来记录一下解决方案
537 0
消息中间件 缓存 监控
123 0
|
6月前
|
Java
使用java底层实现邮件的发送(含测试,源码)
使用java底层实现邮件的发送(含测试,源码)
|
4月前
|
Java API Maven
如何在Java中实现邮件发送功能?
如何在Java中实现邮件发送功能?
|
5月前
|
前端开发 Java 网络安全
基于Java Socket实现的SMTP邮件客户端 - 全面支持SSL, TLS
基于Java Socket实现的SMTP邮件客户端 - 全面支持SSL, TLS
60 0
|
6月前
|
Java API 数据安全/隐私保护
【亮剑】如何在Java项目中结合Spring框架实现邮件发送功能
【4月更文挑战第30天】本文介绍了如何在Java项目中结合Spring框架实现邮件发送功能。首先,需在`pom.xml`添加Spring和JavaMail依赖。然后,在`applicationContext.xml`配置邮件发送器,包括SMTP服务器信息。接着,创建一个使用依赖注入的`EmailService`类,通过`JavaMailSender`发送邮件。最后,调用`EmailService`的`sendSimpleEmail`方法即可发送邮件。最佳实践包括:使用配置管理敏感信息,利用`MimeMessage`构造复杂邮件,异常处理和日志记录,以及在大量发送时考虑使用邮件队列。
118 1
|
6月前
|
Java 数据安全/隐私保护 Windows
java实现邮件发送准备工作(前期配置)
java实现邮件发送准备工作(前期配置)
|
Java 数据安全/隐私保护
【Java用法】java使用javax.mail读取邮箱,SpringBoot javax.mail获取邮件内容,根据时间段筛选邮件,内附代码,拿来即用
【Java用法】java使用javax.mail读取邮箱,SpringBoot javax.mail获取邮件内容,根据时间段筛选邮件,内附代码,拿来即用
308 0
|
Java
【Java】SpringBoot邮件发送实现
这里我用的是网易免费企业邮箱。参数请不要照抄,改成适合自己的。
178 0
Java实战:使用Hutool中的MailUtil实现邮件的发送
今天给大家分享使用Hutool中的MailUtil实现邮件的发送,主要实现了发送普通文本邮件、发送Html文件、发送邮件包含本地附件、远程下载附件、指定多个发件人的功能。具体的大家可以互相沟通交流!
Java实战:使用Hutool中的MailUtil实现邮件的发送
下一篇
无影云桌面