Java Web Application 自架构 六 邮件服务器与资源存储
2013-02-17 13:56
211 查看
这篇里,做一些简单轻松的配置,邮件服务器的连接与资源的存储。
第一篇的架构中就有提到,通常在开发Web程序时,要连接的外部辅助系统不仅仅只是数据库,还有很多其他的系统需要连接,故而将业务层下面一层叫做Pin, 来做与外部系统的数据交互。这里就列举一些:比如LDAP 服务器,即轻量级目录访问协议的服务器,简单而言是一种优化了读操作的数据库;用来连接其他Web或非Web程序的Web-Service ;邮件服务器;资源管理服务器等等。
很明显,我们的架构是:业务逻辑(Business)层将业务数据模型(Entity)传递给Pin层,Pin层将Entity解析为外部系统能够接受的形式后交由外部系统使用或帮助本系统代管;反方向地,Pin层将外部系统的数据读到并封装成本系统的Entity 后交给Business层做相应处理。
LDAP和Web-Service将会放在后面的两篇。这里,配置两个简单的:邮件服务器,资源管理服务器
1,邮件服务器。用法很容易想到,我们都见过很多的邮件服务器的Web Application,因为
这里笔者就不再废话连篇,上代码:
在@Configuration的ApplicationContext.java文件中ApplicationContext 类体中加入:
Java代码
@Bean public JavaMailSender mailSender() { Properties parameters = WebConfiguration.getSysParams(); JavaMailSenderImpl jms = new JavaMailSenderImpl(); jms.setHost((String) parameters.get("mail.smtp.host")); jms.setUsername((String) parameters.get("mail.smtp.username")); jms.setPassword((String) parameters.get("mail.smtp.password")); jms.setDefaultEncoding((String) parameters.get("mail.smtp.encoding")); jms.setPort(Integer.parseInt((String) parameters.get("mail.smtp.port"))); jms.setProtocol((String) parameters.get("mail.transport.protocol")); jms.setJavaMailProperties(parameters); return jms; }
JavaMailSender类在org.springframework.context-support-x.x.x.RELEASE.jar包中,不要忘记导此包入WEB-INF/lib下
当然,还要有JavaMail API的类库,在Spring文档http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/mail.html中写的是
mail.jar和activation.jar
由于activation.jar即JAF已经成为标准的Java组件而被包含在1.6版本以上的JDK中,所以1.6版本以上的JDK不再需要activation.jar,然后新版的JavaMail API应该是6个jars.分别为:mail.jar mailapi.jardsn.jap imap.jar pop3.jarsmtp.jar
Parameters 自然还在sysParams.properties文件中去写。
Plain代码
mail.store.protocol=pop3 mail.transport.protocol=smtp mail.smtp.encoding=utf-8 mail.smtp.host=127.0.0.1 mail.smtp.port=25 mail.smtp.username=root mail.smtp.password=root mail.smtp.socketFactory.port=465 mail.smtp.auth=true mail.smtp.timeout=10000 mail.smtp.starttls.enable=true mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
而后,在pin层新建接口IMailPin.java, 在pin.imap下新建该接口实现类SpringMailPin.java
代码如下:
Java代码
package com.xxxxx.webmodel.pin.impl;
import java.io.Serializable;
import javax.annotation.Resource;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.stereotype.Component;
import com.xxxxx.webmodel.pin.IMailPin;
@Component
public class SpringMailPin implements IMailPin,Serializable {
private static final long serialVersionUID = -1313340434948728744L;
private JavaMailSender mailSender;
public JavaMailSender getMailSender() {
return mailSender;
}
@Resource
public void setMailSender(JavaMailSender mailSender) {
this.mailSender = mailSender;
}
@Override
public void testMail() {
JavaMailSenderImpl jms = (JavaMailSenderImpl)this.mailSender;
System.out.println(jms.getHost());
MimeMessage mimeMsg =jms.createMimeMessage();
try {
mimeMsg.setSubject("Test James");
mimeMsg.setFrom(new InternetAddress("xxxxxx@tom.com"));
mimeMsg.setRecipient(RecipientType.TO, new Inter-netAddress("xxxxx@live.com"));
mimeMsg.setRecipient(RecipientType.CC, new Inter-netAddress("xxxxxx@yahoo.com"));
mimeMsg.setRecipient(RecipientType.BCC, new Inter-netAddress("xxxxx@mail.com"));
mimeMsg.setText("Hello");
// MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMsg, true, "utf-8");
// mimeMessageHelper.setFrom("hitmit1314@tom.com");
// mimeMessageHelper.setTo("palmtale@live.com");
//
// mimeMessageHelper.setCc("palmtale@yahoo.com");
// mimeMessageHelper.setBcc("palmtale@mail.com");
// mimeMessageHelper.setSubject("Test mail");
// mimeMessageHelper.setText("Hi, Hello", true);
mailSender.send(mimeMsg);
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
第一篇的架构中就有提到,通常在开发Web程序时,要连接的外部辅助系统不仅仅只是数据库,还有很多其他的系统需要连接,故而将业务层下面一层叫做Pin, 来做与外部系统的数据交互。这里就列举一些:比如LDAP 服务器,即轻量级目录访问协议的服务器,简单而言是一种优化了读操作的数据库;用来连接其他Web或非Web程序的Web-Service ;邮件服务器;资源管理服务器等等。
很明显,我们的架构是:业务逻辑(Business)层将业务数据模型(Entity)传递给Pin层,Pin层将Entity解析为外部系统能够接受的形式后交由外部系统使用或帮助本系统代管;反方向地,Pin层将外部系统的数据读到并封装成本系统的Entity 后交给Business层做相应处理。
LDAP和Web-Service将会放在后面的两篇。这里,配置两个简单的:邮件服务器,资源管理服务器
1,邮件服务器。用法很容易想到,我们都见过很多的邮件服务器的Web Application,因为
这里笔者就不再废话连篇,上代码:
在@Configuration的ApplicationContext.java文件中ApplicationContext 类体中加入:
Java代码
@Bean public JavaMailSender mailSender() { Properties parameters = WebConfiguration.getSysParams(); JavaMailSenderImpl jms = new JavaMailSenderImpl(); jms.setHost((String) parameters.get("mail.smtp.host")); jms.setUsername((String) parameters.get("mail.smtp.username")); jms.setPassword((String) parameters.get("mail.smtp.password")); jms.setDefaultEncoding((String) parameters.get("mail.smtp.encoding")); jms.setPort(Integer.parseInt((String) parameters.get("mail.smtp.port"))); jms.setProtocol((String) parameters.get("mail.transport.protocol")); jms.setJavaMailProperties(parameters); return jms; }
@Bean public JavaMailSender mailSender() { Properties parameters = WebConfiguration.getSysParams(); JavaMailSenderImpl jms = new JavaMailSenderImpl(); jms.setHost((String) parameters.get("mail.smtp.host")); jms.setUsername((String) parameters.get("mail.smtp.username")); jms.setPassword((String) parameters.get("mail.smtp.password")); jms.setDefaultEncoding((String) parameters.get("mail.smtp.encoding")); jms.setPort(Integer.parseInt((String) parameters.get("mail.smtp.port"))); jms.setProtocol((String) parameters.get("mail.transport.protocol")); jms.setJavaMailProperties(parameters); return jms; }
JavaMailSender类在org.springframework.context-support-x.x.x.RELEASE.jar包中,不要忘记导此包入WEB-INF/lib下
当然,还要有JavaMail API的类库,在Spring文档http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/mail.html中写的是
mail.jar和activation.jar
由于activation.jar即JAF已经成为标准的Java组件而被包含在1.6版本以上的JDK中,所以1.6版本以上的JDK不再需要activation.jar,然后新版的JavaMail API应该是6个jars.分别为:mail.jar mailapi.jardsn.jap imap.jar pop3.jarsmtp.jar
Parameters 自然还在sysParams.properties文件中去写。
Plain代码
mail.store.protocol=pop3 mail.transport.protocol=smtp mail.smtp.encoding=utf-8 mail.smtp.host=127.0.0.1 mail.smtp.port=25 mail.smtp.username=root mail.smtp.password=root mail.smtp.socketFactory.port=465 mail.smtp.auth=true mail.smtp.timeout=10000 mail.smtp.starttls.enable=true mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
mail.store.protocol=pop3 mail.transport.protocol=smtp mail.smtp.encoding=utf-8 mail.smtp.host=127.0.0.1 mail.smtp.port=25 mail.smtp.username=root mail.smtp.password=root mail.smtp.socketFactory.port=465 mail.smtp.auth=true mail.smtp.timeout=10000 mail.smtp.starttls.enable=true mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
而后,在pin层新建接口IMailPin.java, 在pin.imap下新建该接口实现类SpringMailPin.java
代码如下:
Java代码
package com.xxxxx.webmodel.pin.impl;
import java.io.Serializable;
import javax.annotation.Resource;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.stereotype.Component;
import com.xxxxx.webmodel.pin.IMailPin;
@Component
public class SpringMailPin implements IMailPin,Serializable {
private static final long serialVersionUID = -1313340434948728744L;
private JavaMailSender mailSender;
public JavaMailSender getMailSender() {
return mailSender;
}
@Resource
public void setMailSender(JavaMailSender mailSender) {
this.mailSender = mailSender;
}
@Override
public void testMail() {
JavaMailSenderImpl jms = (JavaMailSenderImpl)this.mailSender;
System.out.println(jms.getHost());
MimeMessage mimeMsg =jms.createMimeMessage();
try {
mimeMsg.setSubject("Test James");
mimeMsg.setFrom(new InternetAddress("xxxxxx@tom.com"));
mimeMsg.setRecipient(RecipientType.TO, new Inter-netAddress("xxxxx@live.com"));
mimeMsg.setRecipient(RecipientType.CC, new Inter-netAddress("xxxxxx@yahoo.com"));
mimeMsg.setRecipient(RecipientType.BCC, new Inter-netAddress("xxxxx@mail.com"));
mimeMsg.setText("Hello");
// MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMsg, true, "utf-8");
// mimeMessageHelper.setFrom("hitmit1314@tom.com");
// mimeMessageHelper.setTo("palmtale@live.com");
//
// mimeMessageHelper.setCc("palmtale@yahoo.com");
// mimeMessageHelper.setBcc("palmtale@mail.com");
// mimeMessageHelper.setSubject("Test mail");
// mimeMessageHelper.setText("Hi, Hello", true);
mailSender.send(mimeMsg);
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
相关文章推荐
- Java Web Application 自架构 六 邮件服务器与资源存储
- Java Web Application 自架构 六 邮件服务器与资源存储
- Java Web Application 自架构 一 注解化配置
- Java Web Application 自架构 四 Log4j2日志管理
- Java Web Application 自架构 二 单元测试模块
- Java Web Application 自架构 四 Log4j2日志管理
- Java Web Application 自架构 三 通用DAO类实现
- Java Web Application 自架构 三 通用DAO类实现
- Java Web Application 自架构 五 AOP概念的引入
- Java Web Application 自架构 五 AOP概念的引入
- Java Web Application 自架构 二 单元测试模块
- Java Web Application 自架构 一 注解化配置
- Java Web Application 自架构 三 通用DAO类实现
- Java Web Application 自架构 二 单元测试模块
- Java Web Application 自架构 五 AOP概念的引入
- Java Web Application 自架构 一 注解化配置
- [/WEB-INF/applicationContext-dao.xml]; nested exception is java.lang.ClassCastException
- Java Web项目加载properties资源文件
- 使用Maven构建javaWeb项目时,启动tomcat出错:严重: Error configuring application listener of class org.springframewo
- JavaWeb学习笔记——开发动态WEB资源(一)Java程序向浏览器输出数据