public class EmailUtils implements IAction
{
private static Logger logger = Logger.getLogger(EmailUtils.class.getName()); private static EmailUtils instance;
//邮件服务器
private static String EMAIL_HOST = "mail.host";
//邮件简单协议
private static String MAIL_TRANSPORT_PROTOCOL = "mail.transport.protocol";
//是否开启验证,必须能为true
private static boolean MAIL_SMTP_AUTH_VALUE = true;
//是否开启验证
private static String MAIL_SMTP_AUTH = "mail.smtp.auth"; private static String EAIL_FORMATTER = "text/html;charset=utf-8"; private static String MAIL_SMTP_PORT = "mail.smtp.port"; Map<String,String> map = null;
List<String> receiverList; public static EmailUtils getInstance() throws BaseAppException {
if(null == instance){
instance = new EmailUtils();
}
return instance;
} public EmailUtils() throws BaseAppException
{
logger.info("get email info begain.....");
//初始化邮件系统参数系统
Base base = new Base(new DynamicDict().getConnection());
String sql = "SELECT PARA_SUB_CODE,PARA_VALUE FROM TWF_SYSTEMPARAMETER WHERE PARA_CATEGORY =15 ORDER BY SEQ ASC";
DynamicDict dict = base.query("get email info", "EMAIL", sql,new String[]{});
map = new HashMap<String,String>(); // properties = new Properties();
if(dict.getCount("EMAIL")>0){
for (int i = 0; i < dict.getCount("EMAIL"); i++)
{
Map<String,String> map_value = new HashMap<String,String>();
map_value = (Map<String, String>)dict.getValueByName("EMAIL",i);
map.put(map_value.get("PARA_CODE"), map_value.get("PARA_VALUE"));
}
} //获取邮件的接受者
String rSql = "SELECT PARA_SUB_CODE,PARA_VALUE FROM TWF_SYSTEMPARAMETER WHERE PARA_CATEGORY =16 ORDER BY SEQ ASC";
//Base rBase = new Base(new DynamicDict().getConnection());
receiverList = new LinkedList<String>();
DynamicDict receiverDict = base.query("get email receiver", "EMAIL_RECEIVER", rSql,new String[]{});
if(receiverDict.getCount("EMAIL_RECEIVER")>0){
for (int i = 0; i < receiverDict.getCount("EMAIL_RECEIVER"); i++)
{
Map<String,String> map_value = new HashMap<String,String>();
map_value = (Map<String, String>)receiverDict.getValueByName("EMAIL_RECEIVER",i);
receiverList.add(map_value.get("PARA_VALUE"));
}
}
} @Override
public int perform(DynamicDict dict)
throws BaseAppException
{
//判断工单状态和等级
String level_order = dict.getString("WORK_ORDER_LEVEL");
String state_order = dict.getString("WORK_ORDER_STATE");
//String receiver = dict.getString("STAFF_EMAIL");
Properties prop=new Properties();
//邮件主题、内容、发送者、密码、工单等级、状态
String subject = "",content = "", sender = "",password = "" ,level = "", state = "";
prop.put(MAIL_SMTP_AUTH, MAIL_SMTP_AUTH_VALUE);
logger.info("get email config info map :"+map);
if(!CollectionUtils.isEmpty(map)){ //邮件服务器
prop.put(EMAIL_HOST, map.get("FOS_EMAIL_HOST"));
//邮件简单协议
prop.put(MAIL_TRANSPORT_PROTOCOL, map.get("FOS_EMAIL_TRANSPORT_PROTOCOL"));
//邮件端口
prop.put(MAIL_SMTP_PORT, map.get("FOS_EMAIL_PORT"));
//密码(授权码非邮件用户登陆密码)
password = map.get("FOS_EMAIL_SENDER_PASSWORD");
//邮件主题
subject = map.get("FOS_EMAIL_TITLE");
//邮件内容
content = map.get("FOS_EMAIL_CONTENT").replace("$(staffname)", dict.getString("STAFF_NAME")).replace("$(workorderno)", dict.getString("WORK_ORDER_NO"));
//用户名
sender = map.get("FOS_EMAIL_SENDER_USERNAME");
//工单状态
state = map.get("FOS_EMAIL_ORDER_STATE");
//工单等级
level = map.get("FOS_EMAIL_ORDER_LEVEL");
}
// if(level_order.equals(level) && state_order.equals(state)){
try
{
for (String receiver : receiverList) {
sendEamil(prop, subject, content, sender, password, receiver);
}
}
catch (MessagingException e)
{
logger.error("send email fail caused by :"+e);
throw new BaseAppException("send email fail caused by :"+e);
}
//}
return 0;
} //发送邮件
public void sendEamil (Properties prop,String subject,String content,String sender,String password,String receiver) throws MessagingException{
System.out.println("prop..."+prop);
//使用java发送邮件5步骤
//1.创建sesssion
Session session=Session.getInstance(prop);
//开启session的调试模式,可以查看当前邮件发送状态
session.setDebug(true);
//2.通过session获取Transport对象(发送邮件的核心API)
Transport ts=session.getTransport();
System.out.println(ts);
//3.通过邮件用户名密码链接
ts.connect(sender, password);
//4.创建邮件
Message msg=createSimpleMail(session,subject,content,sender,receiver) ;
//5.发送电子邮件
ts.sendMessage(msg, msg.getAllRecipients());
} //創建一封郵件
public static MimeMessage createSimpleMail(Session session,String subject,String content,String sender,String receiver) throws AddressException,MessagingException{
//创建邮件对象
MimeMessage mm=new MimeMessage(session);
//设置发件人
mm.setFrom(new InternetAddress(sender));
//设置收件人
mm.setRecipient(Message.RecipientType.TO, new InternetAddress(receiver));
// //设置抄送人
// mm.setRecipient(Message.RecipientType.CC, new InternetAddress("632132852@qq.com"));
mm.setSubject(subject);
mm.setContent(content, EAIL_FORMATTER);
return mm;
} public static void main(String[] args) throws MessagingException, BaseAppException
{
Properties localProperties = System.getProperties();
localProperties.setProperty("ZSMART_HOME", "F:\\zsmart");
DynamicDict dict = new DynamicDict();
dict.setValueByName("STAFF_NAME", "wudi");
dict.setValueByName("WORK_ORDER_NO", "123456");
//dict.setValueByName("STAFF_EMAIL", "wudi@redoornetwork.com");
//dict.setValueByName("WORK_ORDER_LEVEL", "A");
//dict.setValueByName("WORK_ORDER_STATE", "0"); System.out.println(FOSCommonCache.getInstance().getListByCode("FOS_EMAIL")); // EmailUtils.getInstance().perform(dict);
} }

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

还有就是需要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. 记一次简单的SQL优化

    原来的sql是这样写的 SELECT d.ONSALE_BARCODE, d.ONSALE_NAME, c.ONSALE_ID, CAST( , ) ) AS CUSTOMARY_PRICE, CAS ...

  2. 安装centos后无法引导启动windows7的解决方法

    在电脑Windows7系统上安装Centos7,安装后找不到Windows7引导菜单. 原因:因为CentOS 7已采用新式的grub2系统,所以需要进入/boot/grub2目录后使用vi编辑gru ...

  3. 安装ArcGIS Desktop 9.3

    本文仅用于学习交流,商业用途请支持正版!转载请注明: http://www.cnblogs.com/mxbs/p/6216865.html 准备: ArcGIS Desktop 9.3.crack_f ...

  4. TesseractOCR

    简介: OCR(Optical Character Recognition):光学字符识别,是指对图片文件中的文字进行分析识别,获取的过程. Tesseract:开源的OCR识别引擎,初期Tesser ...

  5. 重度使用示波器进行优化分析——一个DSDA项目回顾

    这是若干年前一个项目,最近有时间整理一下.回忆起来,印象最深刻的就是重度使用示波器辅助分析,进行优化. 项目背景是在原有项目3G+项目基础上,增加一颗2G+ Modem,使支持DSDA功能. 在介绍D ...

  6. 调用altera IP核的仿真流程—上

    调用altera IP核的仿真流程—上 在学习本节内容之后,请详细阅读<基于modelsim-SE的简单仿真流程>,因为本节是基于<基于modelsim-SE的简单仿真流程>的 ...

  7. 5G关键技术评述

    业内重大事件: 张  平:无线通信领域专家,北京邮电大学教授,博士生导师,现任北京邮电大学无线新技术研究所(WTI)所长.泛网无线通信教育部重点实验室主任以及中德软件研究所副所长.张平教授是国家宽带无 ...

  8. 齐夫定律, Zipf's law,Zipfian distribution

    齐夫定律(英语:Zipf's law,IPA英语发音:/ˈzɪf/)是由哈佛大学的语言学家乔治·金斯利·齐夫(George Kingsley Zipf)于1949年发表的实验定律. 它可以表述为: 在 ...

  9. oracle日常——sqlplus客户端登录

    1.进入cmd 2.命令--sqlplus--提示输入帐号与密码 3.进入后,就可以直接键入sql命令 ps.sql命令后面需要添加分号后才可以回车执行

  10. 【BZOJ 1494】【NOI 2007】生成树计数

    http://www.lydsy.com/JudgeOnline/problem.php?id=1494 这道题..因为k很小,而且我们只关心连续的k个节点的连通性,所以把连续的k个点轮廓线上的连通性 ...