项目中email处理总结一下:
1.封装邮件信息类:
java 代码
-
-
-
-
-
-
- public class MailEngine {
- private final Log logger = LogFactory.getLog(MailEngine.class);
- private MailSender mailSender;
- private VelocityEngine velocityEngine;
-
- public void setMailSender(MailSender mailSender) {
- this.mailSender = mailSender;
- }
-
- public void setVelocityEngine(VelocityEngine velocityEngine) {
- this.velocityEngine = velocityEngine;
- }
-
-
-
-
-
-
-
-
-
-
-
- public void sendMessage(SimpleMailMessage msg, String templateName,
- Map model) {
- String result = null;
- try {
- MimeMessage message = ((JavaMailSenderImpl) mailSender)
- .createMimeMessage();
-
- result = VelocityEngineUtils.mergeTemplateIntoString(
- velocityEngine, templateName, "UTF-8", model);
- } catch (VelocityException e) {
- e.printStackTrace();
- logger.error(e.getMessage());
- }
- msg.setText(result);
- send(msg);
- }
-
-
-
-
-
-
-
- public void send(SimpleMailMessage msg) {
- try {
-
- mailSender.send(msg);
- } catch (MailException ex) {
-
- logger.error(ex.getMessage());
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- public void sendMessage(String[] recipients, String sender,
- ClassPathResource resource, String bodyText, String subject,
- String attachmentName) throws MessagingException {
- MimeMessage message = ((JavaMailSenderImpl) mailSender)
- .createMimeMessage();
-
- MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
-
- helper.setTo(recipients);
- helper.setFrom(sender);
- helper.setText(bodyText);
- helper.setSubject(subject);
-
- helper.addAttachment(attachmentName, resource);
-
- ((JavaMailSenderImpl) mailSender).send(message);
- }
2.spring配置文件,xxxx-mail.xml:
xml 代码
-
-
-
- <bean id="mailEngine"
- class="com.linkmed.cas.service.email.MailEngine">
- <property name="mailSender" ref="mailSender" />
- <property name="velocityEngine" ref="velocityEngine" />
- bean>
-
- <bean id="mailSender"
- class="org.springframework.mail.javamail.JavaMailSenderImpl">
- <property name="host" value="${mail.host}" />
-
- <property name="username" value="${mail.username}"/>
- <property name="password" value="${mail.password}"/>
- <property name="javaMailProperties">
- <value>
- mail.smtp.auth=${mail.validator}
- value>
- property>
- bean>
-
-
- <bean id="velocityEngine"
- class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
- <property name="velocityProperties">
- <props>
- <prop key="resource.loader">classprop>
- <prop key="class.resource.loader.class">
- org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
- prop>
- <prop key="velocimacro.library">prop>
- props>
- property>
- bean>
-
- <bean id="mailMessage"
- class="org.springframework.mail.SimpleMailMessage"
- scope="prototype">
- <property name="from" value="${mail.default.from}" />
- bean>
说明:模板文件放到classpath的velocity目录下,可自行改。
3.发送者邮件信息,mail.properties(classpath位置):
xml 代码
- # This properties file is used to configure mail settings in
- # /resources/linkmed-application-service.xml
-
- mail.default.from=dxy.cn <anct125@163.com>
- mail.debug=false
- mail.transport.protocol=smtp
- mail.host=smtp.163.com
- mail.username=anct125
- mail.password=anct125
- mail.validator=true
4.模板文件,text.vm(classpath的velocity目录下):
你好!${me} 这是模板生成的邮件。
5.使用:
java 代码
- public class MailEngineTest extends BaseTestCase {
-
- private MailEngine mailEngine;
-
- private SimpleMailMessage mailMessage;
-
- public void onSetUp() {
- mailEngine = (MailEngine) ctx.getBean("mailEngine");
- mailMessage = (SimpleMailMessage) ctx.getBean("mailMessage");
- }
-
- public void testSendMail() {
- assertNotNull(mailEngine);
- assertNotNull(mailMessage);
- mailMessage.setTo("wangkai );
- mailMessage.setFrom("dxy );
- mailMessage.setSubject("mail.mail.mail.标题有的哈哈!");
- Map
- model.put("user", "wangkai");
-
- model.put("message", "test");
- mailEngine.sendMessage(mailMessage, "register.vm", model);
- }