发送代码如下:
public class MailSender { // 短信服务队列 private final String MAIL_QUEUE = "notify.mail.mailQueue"; public static void main(String[] args) { MailSender sender = new MailSender(); DefaultEmailNotifyRequest request = sender.prepareRequest(); sender.send(request); } private DefaultEmailNotifyRequest prepareRequest() { DefaultEmailNotifyRequest request = new DefaultEmailNotifyRequest(); // seashell数据库中的表NOTIFICATIONTEMPLATE ID,记录内容为freemarker格式的短信内容模板. // 新增模板请发邮件到pmd_inf@99bill.com request.setTemplateId(39); // request.setNotificationOwner(21); // request.setNotifyType(1); // 邮件通知接收者,可以调用此方法加入多个接收者 request.addRecvAddress("xxxx@163.com"); Map para = new HashMap(); para.put("PAYERNAME", "test"); para.put("MONTH", "test"); para.put("DAY", "test"); para.put("PAYEENAME", "test"); para.put("TRANSAMOUNT", "test"); para.put("ORDERSEQID", 1234567890); para.put("TRANSAMOUNT", "test"); para.put("PAYERIDCONTENT", "test"); para.put("PAYERNAME", "test"); para.put("PAYERMEMBERACCTNAME", "test"); para.put("PAYEENAME", "test"); para.put("DATE", "test"); para.put("REMARK", "test"); request.setParameters(para); request.addAttachments("http://www.baidu.com/"); // 解析freemarker模板用的kv参数,如果模板解析错误,将无法发送短信,服务端将抛弃这次请求 return request; } private void send(final DefaultEmailNotifyRequest request) { getJmsTemplate().send(MAIL_QUEUE, new MessageCreator() { public Message createMessage(Session session) throws JMSException { ObjectMessage objectMessage = session.createObjectMessage(request); return objectMessage; } }); System.out.println("sending mail complet"); } private JmsTemplate getJmsTemplate() { ApplicationContext ctx = new ClassPathXmlApplicationContext("context/context-notify-sms.xml"); JmsTemplate jmsTemplate = (JmsTemplate) ctx.getBean("jmsTemplate"); return jmsTemplate; } } |
---|
spring配置文件内容如下:
<beans> <import resource="classpath:context/envPropertyLoader.xml"/> <!-- 配置JmsTemplate组件 --> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="pooledConnectionFactory" /> <property name="sessionTransacted" value="true" /> <property name="sessionAcknowledgeModeName" value="SESSION_TRANSACTED" /> </bean> <!-- 新增Pooled Connection Factory --> <bean id="pooledConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory"> <property name="targetConnectionFactory" ref="seashellConnectionFactory" /> <property name="sessionCacheSize" value="5" /> </bean> <bean id="seashellConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiTemplate" ref="jndiTemplate" /> <property name="jndiName" value="${notify.connection.factory.jndiname}" /> </bean> <bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate"> <property name="environment"> <props> <prop key="java.naming.factory.initial">${notify.java.naming.factory.initial}</prop> <prop key="java.naming.security.principal">${notify.java.naming.security.principal}</prop> <prop key="java.naming.security.credentials">${notify.java.naming.security.credentials}</prop> <prop key="java.naming.provider.url">${notify.java.naming.provider.url}</prop> </props> </property> </bean> </beans> |
---|
最小依赖jar如下:
commons-logging-1.1.1.jar
if-enumhelper-4.3.1.jar
if-notification-4.3.38.jar
jms-6.0.jar
spring-2.5.5.jar
tibjms-jdk1.4-1.0.jar