1. public class EmailUtils implements IAction
  2. {
  3. private static Logger logger = Logger.getLogger(EmailUtils.class.getName());
  4.  
  5. private static EmailUtils instance;
  6. //邮件服务器
  7. private static String EMAIL_HOST = "mail.host";
  8. //邮件简单协议
  9. private static String MAIL_TRANSPORT_PROTOCOL = "mail.transport.protocol";
  10. //是否开启验证,必须能为true
  11. private static boolean MAIL_SMTP_AUTH_VALUE = true;
  12. //是否开启验证
  13. private static String MAIL_SMTP_AUTH = "mail.smtp.auth";
  14.  
  15. private static String EAIL_FORMATTER = "text/html;charset=utf-8";
  16.  
  17. private static String MAIL_SMTP_PORT = "mail.smtp.port";
  18.  
  19. Map<String,String> map = null;
  20. List<String> receiverList;
  21.  
  22. public static EmailUtils getInstance() throws BaseAppException {
  23. if(null == instance){
  24. instance = new EmailUtils();
  25. }
  26. return instance;
  27. }
  28.  
  29. public EmailUtils() throws BaseAppException
  30. {
  31. logger.info("get email info begain.....");
  32. //初始化邮件系统参数系统
  33. Base base = new Base(new DynamicDict().getConnection());
  34. String sql = "SELECT PARA_SUB_CODE,PARA_VALUE FROM TWF_SYSTEMPARAMETER WHERE PARA_CATEGORY =15 ORDER BY SEQ ASC";
  35. DynamicDict dict = base.query("get email info", "EMAIL", sql,new String[]{});
  36. map = new HashMap<String,String>();
  37.  
  38. // properties = new Properties();
  39. if(dict.getCount("EMAIL")>0){
  40. for (int i = 0; i < dict.getCount("EMAIL"); i++)
  41. {
  42. Map<String,String> map_value = new HashMap<String,String>();
  43. map_value = (Map<String, String>)dict.getValueByName("EMAIL",i);
  44. map.put(map_value.get("PARA_CODE"), map_value.get("PARA_VALUE"));
  45. }
  46. }
  47.  
  48. //获取邮件的接受者
  49. String rSql = "SELECT PARA_SUB_CODE,PARA_VALUE FROM TWF_SYSTEMPARAMETER WHERE PARA_CATEGORY =16 ORDER BY SEQ ASC";
  50. //Base rBase = new Base(new DynamicDict().getConnection());
  51. receiverList = new LinkedList<String>();
  52. DynamicDict receiverDict = base.query("get email receiver", "EMAIL_RECEIVER", rSql,new String[]{});
  53. if(receiverDict.getCount("EMAIL_RECEIVER")>0){
  54. for (int i = 0; i < receiverDict.getCount("EMAIL_RECEIVER"); i++)
  55. {
  56. Map<String,String> map_value = new HashMap<String,String>();
  57. map_value = (Map<String, String>)receiverDict.getValueByName("EMAIL_RECEIVER",i);
  58. receiverList.add(map_value.get("PARA_VALUE"));
  59. }
  60. }
  61. }
  62.  
  63. @Override
  64. public int perform(DynamicDict dict)
  65. throws BaseAppException
  66. {
  67. //判断工单状态和等级
  68. String level_order = dict.getString("WORK_ORDER_LEVEL");
  69. String state_order = dict.getString("WORK_ORDER_STATE");
  70. //String receiver = dict.getString("STAFF_EMAIL");
  71. Properties prop=new Properties();
  72. //邮件主题、内容、发送者、密码、工单等级、状态
  73. String subject = "",content = "", sender = "",password = "" ,level = "", state = "";
  74. prop.put(MAIL_SMTP_AUTH, MAIL_SMTP_AUTH_VALUE);
  75. logger.info("get email config info map :"+map);
  76. if(!CollectionUtils.isEmpty(map)){
  77.  
  78. //邮件服务器
  79. prop.put(EMAIL_HOST, map.get("FOS_EMAIL_HOST"));
  80. //邮件简单协议
  81. prop.put(MAIL_TRANSPORT_PROTOCOL, map.get("FOS_EMAIL_TRANSPORT_PROTOCOL"));
  82. //邮件端口
  83. prop.put(MAIL_SMTP_PORT, map.get("FOS_EMAIL_PORT"));
  84. //密码(授权码非邮件用户登陆密码)
  85. password = map.get("FOS_EMAIL_SENDER_PASSWORD");
  86. //邮件主题
  87. subject = map.get("FOS_EMAIL_TITLE");
  88. //邮件内容
  89. content = map.get("FOS_EMAIL_CONTENT").replace("$(staffname)", dict.getString("STAFF_NAME")).replace("$(workorderno)", dict.getString("WORK_ORDER_NO"));
  90. //用户名
  91. sender = map.get("FOS_EMAIL_SENDER_USERNAME");
  92. //工单状态
  93. state = map.get("FOS_EMAIL_ORDER_STATE");
  94. //工单等级
  95. level = map.get("FOS_EMAIL_ORDER_LEVEL");
  96. }
  97. // if(level_order.equals(level) && state_order.equals(state)){
  98. try
  99. {
  100. for (String receiver : receiverList) {
  101. sendEamil(prop, subject, content, sender, password, receiver);
  102. }
  103. }
  104. catch (MessagingException e)
  105. {
  106. logger.error("send email fail caused by :"+e);
  107. throw new BaseAppException("send email fail caused by :"+e);
  108. }
  109. //}
  110. return 0;
  111. }
  112.  
  113. //发送邮件
  114. public void sendEamil (Properties prop,String subject,String content,String sender,String password,String receiver) throws MessagingException{
  115. System.out.println("prop..."+prop);
  116. //使用java发送邮件5步骤
  117. //1.创建sesssion
  118. Session session=Session.getInstance(prop);
  119. //开启session的调试模式,可以查看当前邮件发送状态
  120. session.setDebug(true);
  121. //2.通过session获取Transport对象(发送邮件的核心API)
  122. Transport ts=session.getTransport();
  123. System.out.println(ts);
  124. //3.通过邮件用户名密码链接
  125. ts.connect(sender, password);
  126. //4.创建邮件
  127. Message msg=createSimpleMail(session,subject,content,sender,receiver) ;
  128. //5.发送电子邮件
  129. ts.sendMessage(msg, msg.getAllRecipients());
  130. }
  131.  
  132. //創建一封郵件
  133. public static MimeMessage createSimpleMail(Session session,String subject,String content,String sender,String receiver) throws AddressException,MessagingException{
  134. //创建邮件对象
  135. MimeMessage mm=new MimeMessage(session);
  136. //设置发件人
  137. mm.setFrom(new InternetAddress(sender));
  138. //设置收件人
  139. mm.setRecipient(Message.RecipientType.TO, new InternetAddress(receiver));
  140. // //设置抄送人
  141. // mm.setRecipient(Message.RecipientType.CC, new InternetAddress("632132852@qq.com"));
  142. mm.setSubject(subject);
  143. mm.setContent(content, EAIL_FORMATTER);
  144. return mm;
  145. }
  146.  
  147. public static void main(String[] args) throws MessagingException, BaseAppException
  148. {
  149. Properties localProperties = System.getProperties();
  150. localProperties.setProperty("ZSMART_HOME", "F:\\zsmart");
  151. DynamicDict dict = new DynamicDict();
  152. dict.setValueByName("STAFF_NAME", "wudi");
  153. dict.setValueByName("WORK_ORDER_NO", "123456");
  154. //dict.setValueByName("STAFF_EMAIL", "wudi@redoornetwork.com");
  155. //dict.setValueByName("WORK_ORDER_LEVEL", "A");
  156. //dict.setValueByName("WORK_ORDER_STATE", "0");
  157.  
  158. System.out.println(FOSCommonCache.getInstance().getListByCode("FOS_EMAIL"));
  159.  
  160. // EmailUtils.getInstance().perform(dict);
  161. }
  162.  
  163. }

  上述代码中夹杂了具体业务中的代码,没有用的可以自行删除,发送邮件比较简单。

还有就是需要mail.jar文件。 点此下载

java发送 email的更多相关文章

  1. java发送email一般步骤

    java发送email一般步骤 一.引入javamail的jar包: 二.创建一个测试类,实现将要发送的邮件内容写入到计算机本地,查看是否能够将内容写入: public static void mai ...

  2. Java发送email的端口问题

    Could not connect to SMTP host: smtp.***.com, port: 465, response: -1 使用Java发送email 的端口问题.一般使用25端口即可 ...

  3. java发送email

    package com.assess.util; import java.io.File; import java.util.ArrayList; import java.util.List; imp ...

  4. java发送email(含代理方式,ssl方式,传统方式)

    package spring.vhostall.com; import java.security.Security; import java.util.Date; import java.util. ...

  5. 用java发送email邮件例子

    package com.hzk.mail; import java.net.MalformedURLException; import java.net.URL; import java.text.S ...

  6. Java发送Email邮件及SpringBoot集成

    一:普通方式发送 1.导包 <!--Java MAil 发送邮件API--> <dependency> <groupId>javax.mail</groupI ...

  7. 关于java发送email

    转载:https://blog.csdn.net/qq_32371887/article/details/72821291 1:使用JavaMail发送邮件 // 1.创建一个程序与邮件服务器会话对象 ...

  8. 廖雪峰Java13网络编程-2Email编程-1发送email

    1.邮件发送 1.1传统邮件发送: 传统的邮件是通过邮局投递,从一个邮局到另一个邮局,最终到达用户的邮箱. 1.2电子邮件发送: 与传统邮件类似,它是从用户电脑的邮件软件(如outlook)发送到邮件 ...

  9. 使用spring 并加载模板发送Email 发邮件 java 模板

    以下例子是使用spring发送email,然后加载到固定的模板,挺好的,大家可以试试 需要使用到spring-context 包 和 com.springsource.org.apache.veloc ...

随机推荐

  1. how2heap分析系列:0

    新学期到了,给学弟们写点东西, https://github.com/shellphish/how2heap 这个how2heap挺不错的,讲述了heap上几种不同的漏洞利用技术,在后面发的几篇中我会 ...

  2. 【Linux】AWK入门

    什么是AWK AWK是一种用于处理文本的编程语言工具,一个模式匹配程序.一个典型的示例是将数据转换成格式化的报告. 在命令行输入如下awk命令: awk -F":" '{ prin ...

  3. 【GSM】GTM900C的应用——短信

    虽说GSM已经很老旧,但其低廉的价格,非常适合一些需要小数据上网传输和短信等功能的应用场合. 不知道GSM能否像51单片机一样,在低端应用中长久不衰.GTM900C发送短信,支持两种模式,TXT和PD ...

  4. redis 学习笔记(6)-cluster集群搭建

    上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...

  5. [LeetCode] Gray Code 格雷码

    The gray code is a binary numeral system where two successive values differ in only one bit. Given a ...

  6. Power Management开发的一般流程

    本文作为一个提纲挈领的介绍性文档,后面会以此展开,逐渐丰富. 开发流程 针对一个PM feature进行开发,设计模型是第一步.模型设计好之后,还要保留参数接口,可以基于这些参数针对特殊个体进行优化. ...

  7. 判断是pc端还是手机端,并跳转到相应页面

    <!-- 判断浏览器是否为手机端 -->  <script>     // class     ! function(navigator) {         var user ...

  8. go database/sql sql-driver/mysql 操作

    这里使用的是github.com/Go-SQL-Driver/MySQL, 所以需要下载一个github.com/Go-SQL-Driver/MySQL 引入 database/sql 和 githu ...

  9. SQL基础语法(五)

    SQL INSERT INTO 语句INSERT INTO 语句 INSERT INTO 语句用于向表格中插入新的行. 语法:INSERT INTO 表名称 VALUES (值1, 值2,....) ...

  10. bootstrap-监听滚动实现头部跟随滚动

    实现案例 <body data-spy="scroll" data-target="#bs-example-navbar-collapse-1"> ...