`
ysen
  • 浏览: 122142 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

email 发送接口

 
阅读更多

企业邮件发送有自己的发送平台,其它系统包括业务系统常常将发送邮件的任务交给该平台。

该平台通过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属性的对象即可

分享到:
评论

相关推荐

    email 邮件发送 java 工具接口

    如果 用myEclipse进行开发时,如果程序中需要发送邮件,运行时可能会出现以下的异常: Exception in thread "main" java.lang.NoClassDefFound Error: com/sun/mail/util/LineInputStream 原因:邮件发送的jar包...

    web 服务编程 Email发送

    本项目聚焦于“Email发送”这一主题,这涉及到Web服务如何与邮件服务器交互,以便实现邮件的发送功能。下面将详细介绍这个领域的相关知识点。 首先,Web服务通常基于开放标准,如XML(可扩展标记语言)、SOAP(简单...

    Java邮件Email发送的jar包

    这个"Java邮件Email发送的jar包"包含了JavaMail API的核心库,即`javax.mail.jar`。 JavaMail API是一个开源的Java库,它提供了标准的Java API来处理SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网消息...

    Java发送email:spring email、微软ews

    Spring Framework提供了`spring-context-support`模块,其中包含了一个Email发送的支持,主要通过`JavaMailSender`接口实现。`JavaMailSender`允许我们配置SMTP服务器信息,如主机地址、端口、用户名、密码等,并...

    非常好用的email发送类 PHP的

    这正是描述中提到的“email发送类 PHP写的”的意义所在,它提供了一个功能丰富的接口,以处理这些高级需求。 在"email.php"文件中,通常会包含一个已实现的邮件发送类,这个类可能封装了SMTP协议,以通过SMTP服务器...

    common email 附件发送

    `commons-email-1.2.jar`是Apache Commons Email库的一部分,它提供了一个高级接口来简化Java中的电子邮件发送。这个库包含了创建、配置和发送电子邮件的所有必要功能,包括添加附件、设置主题、正文以及处理抄送和...

    email发送及定时器

    在给定的“email发送及定时器”项目中,我们可以看到几个关键组件,包括`AutoSendMailPlugin.java`、`TimerTaskPlugin.java`以及`autoSendMailTask.xml`。下面我们将深入探讨这些文件可能涉及的知识点。 首先,`...

    java发送email依赖jar包

    在本篇文章中,我们将深入探讨如何使用`activation.jar`、`commons-email-1.4.jar`和`mail.jar`这三个jar包来在Java中发送电子邮件,以及它们各自的作用。 首先,`activation.jar`是JavaBeans Activation Framework...

    基于Indy的Email发送组件源码

    本资源提供的"基于Indy的Email发送组件源码"是一套完整的电子邮件发送解决方案,适用于那些希望在自己的应用中集成邮件发送功能的开发者。 1. **Indy组件库** Indy是TIdComponent类的子集,包含了众多的网络协议...

    email自动发送系统

    1. **系统架构**:一个电子邮件自动发送系统通常包含用户界面、数据库存储、邮件服务器接口和业务逻辑四部分。用户界面用于配置邮件模板和设置发送规则;数据库存储用户信息、邮件内容以及发送状态等数据;邮件...

    通过 Apache 的 Jarkata Common Email 来发送email

    在源码层面,Apache Jakarta Common Email提供了许多内部类和接口,如`EmailException`、`InternetAddress`和`MimeMessagePreparator`,这些可以帮助我们更灵活地处理邮件的各种情况。例如,`MimeMessagePreparator`...

    java 发送Email 需要的包

    在提供的信息中提到了三个关键的JAR包:`activation-1.1.jar`、`mail-1.4.jar`以及`commons-email-1.2.jar`,这些都是发送邮件所必需的。 首先,`activation-1.1.jar`是JavaBeans Activation Framework (JAF) 的一...

    java实现email发送邮件

    Java Mail API 是 Java 平台上用于处理电子邮件的核心库,它提供了丰富的接口和类,使得开发者可以方便地创建、发送和接收邮件。在这个项目中,我们看到涉及到的文件包括 `mail.jar`、`activation.jar` 和 `myMail....

    JavaEmail发送邮件

    JavaMail API是一个开源库,它为Java程序员提供了处理邮件的接口。这个API允许我们创建、发送和接收邮件,包括附件、HTML内容以及使用SMTP等协议。 要使用JavaMail发送邮件,首先需要引入相关的依赖。如果你使用的...

    [其他类别]冰翎email发送类 v1.0_email.zip

    总的来说,冰翎Email发送类v1.0提供了一个便捷的接口,让开发者能够在各种项目中轻松实现邮件发送功能。尽管没有具体文件列表,但根据常规的邮件发送类库设计,我们可以推测这个类库涵盖了许多核心功能。在实际使用...

    email附件发送、多人发送、抄送

    在电子邮件的使用中,"email附件发送、多人发送、抄送"是三个核心功能,尤其在企业通信中极为常见。本文将深入探讨这三个知识点,并结合Java编程语言来讲解如何实现这些功能。 首先,电子邮件附件发送是指在发送...

    http接口使用说明(适用单条发送).rar

    例如,在API接口中,可能需要向服务器发送一个JSON对象来创建或更新资源。例如: ```json { "id": 1, "name": "John Doe", "email": "johndoe@example.com" } ``` 请求URL可能是`https://api.example.com/users`...

    给用户email发送东西的jar包

    这个“给用户email发送东西的jar包”很可能是一个预编译的Java库,封装了发送电子邮件的功能,使得开发者能够方便地集成到自己的应用程序中。现在,我们将深入探讨电子邮件发送的基本原理和使用Java进行邮件发送的...

    email发送邮件Jar包

    "email发送邮件Jar包"可能包含了对JavaMail API的封装,提供了更简单的接口供用户调用,隐藏了复杂的邮件发送逻辑。这样的工具简化了开发过程,使开发者能够快速集成邮件功能,而无需深入了解底层细节。在使用该JAR...

    c#效果、实现email发送、群体发送

    ### C#与JMail:实现Email发送 #### JMail简介 JMail是一款功能强大的邮件发送控件,支持SMTP、POP3等多种协议,能够方便地集成到.NET应用程序中,实现邮件收发的功能。它不仅提供了丰富的API接口,还支持HTML邮件...

Global site tag (gtag.js) - Google Analytics