- 浏览: 122142 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
roychenyi:
<br>1<br>2<br> ...
pager-taglib 使用说明 -
roychenyi:
<br>换行<br>换行<br& ...
pager-taglib 使用说明 -
wangwenfei1985:
[flash=200,200][url][img][list] ...
pager-taglib 使用说明 -
时光后19:
,看到你这样真好,
FileNet调用webService配置 -
ysen:
大sql导入mysql
如果是SQL格式的。有的可能上100 ...
mysqldump备份详解
企业邮件发送有自己的发送平台,其它系统包括业务系统常常将发送邮件的任务交给该平台。
该平台通过activemq 建立 queue 接受外围系统的发来的报文格式。
报文格式如下:
"[{\"sys\":\"fssc\", \"key\":\"QWESAD456\", \"type\":\"1\", \"email\":\"ysen@xxxx.com\", \"telno\":\"13601942660\", \"pernr\":\"\", \"subject\":\"mysubject\", \"body\":\"xxx,您好!<br>截至今日xx点,您还有xxx条待办事项尚未及时处理,<br>其中紧急事项xxx条,请通过以下链接进入系统--“我的待办”页面,尽快处理。谢谢!此邮件通过系统自动发送,请勿直接回复。如您已经处理,请忽略本邮件。<br>mm/dd/yyyy\", \"aux\":\"020910\"}]";
sys 对应的外围系统名字
type 对应的是发送方式1.email,2 .短信
key 对应的是密码
服务端对这段报文格式先做校验,再做业务处理
客户端需要根据不同的业务制定不同的模板,业务包括body里面的xxx业务数据。
这是业务bo,不同的email模板对应不同的msg对象
import javax.jms.Connection; import javax.jms.DeliveryMode; import javax.jms.Destination; import javax.jms.MessageProducer; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory; public class SendAMQBO { private String user = ActiveMQConnection.DEFAULT_USER; private String password = ActiveMQConnection.DEFAULT_PASSWORD; private String url = "failover://tcp://10.111.11.111:61616"; private Destination destination; public static void main(String[] args) { SimpleSendAMQ mySend = new SimpleSendAMQ(); mySend.sendMessage(); } void sendMessage(Object msg ) { try { Connection connection = null; ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory( user, password, url); connection = connectionFactory.createConnection(); connection.start(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); destination = session.createQueue("unsQueue"); MessageProducer producer = session.createProducer(destination); producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); TextMessage message = session.createTextMessage(); message.setText(msg.toString()); producer.send(message); connection.close(); } catch (Exception ex) { System.out.println(ex.getMessage()); } } }
msg对象需要一个父类需要对报文格式作json化,包括freemarker加载body模板
import java.io.IOException; import java.io.StringWriter; import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; import net.sf.json.JSONObject; import net.sf.json.JsonConfig; import net.sf.json.util.PropertyFilter; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; public abstract class EmailTemplate { private String sys = "fssc"; private String key = "QWESAD456"; private String type = "1"; private String email = " "; private String telno; private String pernr; private String subject; protected String body; private String aux; protected String templateName = ""; public static Configuration conf = new Configuration(); public JsonConfig config = new JsonConfig(); static { conf.setClassForTemplateLoading(EmailTemplate.class, "/templates/"); } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public String getSys() { return sys; } public void setSys(String sys) { this.sys = sys; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getPernr() { return pernr; } public void setPernr(String pernr) { this.pernr = pernr; } public String getKey() { return key; } public void setKey(String key) { this.key = key; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getAux() { return aux; } public void setAux(String aux) { this.aux = aux; } public String getTelno() { return telno; } public void setTelno(String telno) { this.telno = telno; } public String toString() { return JSONObject.fromObject(this, config()).toString(); } public void setBody(String body) { this.body = body; } protected JsonConfig config() { config.setJsonPropertyFilter(new PropertyFilter() { public boolean apply(Object object, String name, Object value) { Field[] fields = object.getClass().getDeclaredFields(); for (int i = 0; i < fields.length; i++) { if (name.equals(fields[i].getName())) { return true; } } if (name.equals("templateName")) { return true; } return false; } }); return config; } public String setFrBody() { try { if(null==templateName||"".equals(templateName)){ templateName = this.getClass().getName()+".ftl"; } Template t = conf.getTemplate(templateName, "UTF-8"); Map<String, Object> root = new HashMap<String, Object>(); root.put("taskEmail", this); StringWriter sw = new StringWriter(); try { t.process(root, sw); return sw.toString(); } catch (TemplateException e) { e.printStackTrace(); } } catch (IOException e) { e.printStackTrace(); } return body; } public String getBody() { body = this.setFrBody(); return body; } public String getTemplateName() { return templateName; } public void setTemplateName(String templateName) { this.templateName = templateName; } }
具体业务对象 包含的业务属性不需要做json化,因为它们是包含在body里面的业务数据
public class TaskEmail extends EmailTemplate { /** * body contect */ private String numTask = "2"; private String urgentTask = "2"; private String time = "9"; public static void main(String[] args) { TaskEmail taskEmail = new TaskEmail(); //taskEmail.setTemplateName("TaskEmail.ftl"); System.out.println(taskEmail.toString()); } public String getNumTask() { return numTask; } public void setNumTask(String numTask) { this.numTask = numTask; } public String getUrgentTask() { return urgentTask; } public void setUrgentTask(String urgentTask) { this.urgentTask = urgentTask; } public String getTime() { return time; } public void setTime(String time) { this.time = time; } }
对应的TaskEmail.ftl
截至今日${taskEmail.time?if_exists}点,您还有${taskEmail.numTask?if_exists}条待办事项尚未及时处理,其中紧急事项${taskEmail.urgentTask?if_exists}条,<br>请通过以下链接进入系统--“我的待办”页面,尽快处理。谢谢!
所以添加新的email发送业务只需要添加客户提供的email模板以及包含简单的body属性的对象即可
发表评论
-
页面在多系统应用中同步
2011-12-12 15:56 1025业务场景: 用户去银行营业厅办理的业务时 ... -
Java与json 的序列化与反序列化
2010-04-19 12:17 4072jsontools 工具包可以将Java对象转化成json对象 ... -
dom4j中的单例策略
2010-04-14 13:53 1567单例模式的实现方法有很多,饿汉和饱汉 ,Double-chec ... -
在Web应用中使用FreeMarker生成html页面
2010-04-11 17:40 3670在Web应用中使用FreeMarker跟在Java程 ... -
freeMarker in web
2010-04-08 19:27 1332一 加入 freemarker.jar 包 二 在需要 ... -
freeMarker_01
2010-04-08 18:58 1213FreeMarker 入门实例 pu ... -
OOD原则
2010-03-09 16:51 1338单一职责原则(SRP) 就一个类而言,应该仅有一个引起它 ... -
GRASP(基于职责设计对象)
2010-03-09 16:41 1444GRASP(General Responsibility A ... -
女友的对话(中介者模式也叫调停者)
2010-01-02 20:40 902需要中介者对象作为通信控制平台 所操控的抽象对象 ... -
请假 加薪(职责链模式)
2009-12-30 20:50 1250学习笔记 职责链模式的结构 和装饰模式的结构是一样的。 ... -
如何换数据库(未使用任何框架)
2009-12-18 04:25 928因为之前使用的mysql 现在想转为Oracle实现 ... -
和女友的不愉快(访问者模式)
2009-12-13 13:59 1023老鸟飞过哈 最近和女友很不和,特此用段模式写下自己的状 ... -
起床做饭(观察者模式)
2009-12-10 23:02 1071//通知者 public class Boy { //状 ... -
朋友做客(外观模式或者门面模式)
2009-12-10 01:12 849老鸟飞过 package facade; /* ... -
城市的生活成本(模板方法)
2009-12-09 16:50 872public abstract class Boy { ... -
女友多的好处2(工厂方法)
2009-12-08 01:01 1406(老鸟略过) 之前的一篇简单方法模式连接地址 http:/ ... -
带女友干活(代理模式)
2009-12-06 23:22 1304老鸟跳过请跳过, 最近无聊,贴一些自己过去学习设计模式 ... -
老公爱吃的菜(策略模式)
2009-12-06 00:09 964将策略的上下文的构造函数换用简单工厂模式的话就将业务对象封装起 ... -
陪她们依次去旅游(装饰模式)
2009-12-05 21:52 833//梦中情人 呵呵 public c ... -
女友多的好处 (简单工厂模式)
2009-12-05 21:47 1207java 的switch 语句的case 匹配为什么不能像de ...
相关推荐
如果 用myEclipse进行开发时,如果程序中需要发送邮件,运行时可能会出现以下的异常: Exception in thread "main" java.lang.NoClassDefFound Error: com/sun/mail/util/LineInputStream 原因:邮件发送的jar包...
本项目聚焦于“Email发送”这一主题,这涉及到Web服务如何与邮件服务器交互,以便实现邮件的发送功能。下面将详细介绍这个领域的相关知识点。 首先,Web服务通常基于开放标准,如XML(可扩展标记语言)、SOAP(简单...
这个"Java邮件Email发送的jar包"包含了JavaMail API的核心库,即`javax.mail.jar`。 JavaMail API是一个开源的Java库,它提供了标准的Java API来处理SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网消息...
Spring Framework提供了`spring-context-support`模块,其中包含了一个Email发送的支持,主要通过`JavaMailSender`接口实现。`JavaMailSender`允许我们配置SMTP服务器信息,如主机地址、端口、用户名、密码等,并...
这正是描述中提到的“email发送类 PHP写的”的意义所在,它提供了一个功能丰富的接口,以处理这些高级需求。 在"email.php"文件中,通常会包含一个已实现的邮件发送类,这个类可能封装了SMTP协议,以通过SMTP服务器...
`commons-email-1.2.jar`是Apache Commons Email库的一部分,它提供了一个高级接口来简化Java中的电子邮件发送。这个库包含了创建、配置和发送电子邮件的所有必要功能,包括添加附件、设置主题、正文以及处理抄送和...
在给定的“email发送及定时器”项目中,我们可以看到几个关键组件,包括`AutoSendMailPlugin.java`、`TimerTaskPlugin.java`以及`autoSendMailTask.xml`。下面我们将深入探讨这些文件可能涉及的知识点。 首先,`...
在本篇文章中,我们将深入探讨如何使用`activation.jar`、`commons-email-1.4.jar`和`mail.jar`这三个jar包来在Java中发送电子邮件,以及它们各自的作用。 首先,`activation.jar`是JavaBeans Activation Framework...
本资源提供的"基于Indy的Email发送组件源码"是一套完整的电子邮件发送解决方案,适用于那些希望在自己的应用中集成邮件发送功能的开发者。 1. **Indy组件库** Indy是TIdComponent类的子集,包含了众多的网络协议...
1. **系统架构**:一个电子邮件自动发送系统通常包含用户界面、数据库存储、邮件服务器接口和业务逻辑四部分。用户界面用于配置邮件模板和设置发送规则;数据库存储用户信息、邮件内容以及发送状态等数据;邮件...
在源码层面,Apache Jakarta Common Email提供了许多内部类和接口,如`EmailException`、`InternetAddress`和`MimeMessagePreparator`,这些可以帮助我们更灵活地处理邮件的各种情况。例如,`MimeMessagePreparator`...
在提供的信息中提到了三个关键的JAR包:`activation-1.1.jar`、`mail-1.4.jar`以及`commons-email-1.2.jar`,这些都是发送邮件所必需的。 首先,`activation-1.1.jar`是JavaBeans Activation Framework (JAF) 的一...
Java Mail API 是 Java 平台上用于处理电子邮件的核心库,它提供了丰富的接口和类,使得开发者可以方便地创建、发送和接收邮件。在这个项目中,我们看到涉及到的文件包括 `mail.jar`、`activation.jar` 和 `myMail....
JavaMail API是一个开源库,它为Java程序员提供了处理邮件的接口。这个API允许我们创建、发送和接收邮件,包括附件、HTML内容以及使用SMTP等协议。 要使用JavaMail发送邮件,首先需要引入相关的依赖。如果你使用的...
总的来说,冰翎Email发送类v1.0提供了一个便捷的接口,让开发者能够在各种项目中轻松实现邮件发送功能。尽管没有具体文件列表,但根据常规的邮件发送类库设计,我们可以推测这个类库涵盖了许多核心功能。在实际使用...
在电子邮件的使用中,"email附件发送、多人发送、抄送"是三个核心功能,尤其在企业通信中极为常见。本文将深入探讨这三个知识点,并结合Java编程语言来讲解如何实现这些功能。 首先,电子邮件附件发送是指在发送...
例如,在API接口中,可能需要向服务器发送一个JSON对象来创建或更新资源。例如: ```json { "id": 1, "name": "John Doe", "email": "johndoe@example.com" } ``` 请求URL可能是`https://api.example.com/users`...
这个“给用户email发送东西的jar包”很可能是一个预编译的Java库,封装了发送电子邮件的功能,使得开发者能够方便地集成到自己的应用程序中。现在,我们将深入探讨电子邮件发送的基本原理和使用Java进行邮件发送的...
"email发送邮件Jar包"可能包含了对JavaMail API的封装,提供了更简单的接口供用户调用,隐藏了复杂的邮件发送逻辑。这样的工具简化了开发过程,使开发者能够快速集成邮件功能,而无需深入了解底层细节。在使用该JAR...
### C#与JMail:实现Email发送 #### JMail简介 JMail是一款功能强大的邮件发送控件,支持SMTP、POP3等多种协议,能够方便地集成到.NET应用程序中,实现邮件收发的功能。它不仅提供了丰富的API接口,还支持HTML邮件...