- 浏览: 563579 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (145)
- apache-struts (3)
- apache-shiro (4)
- apache-wicket (1)
- spring (34)
- spring-data-jpa (2)
- spring-mvc (20)
- spring-security (1)
- spring-webflow (1)
- hibernate (2)
- mongodb (1)
- ibatis (5)
- mysql (4)
- 开源组件 (18)
- java (3)
- maven (7)
- jBPM (1)
- EJB (1)
- JMS (2)
- servlet / jsp (9)
- javascript / jquery (10)
- 工作技巧 (12)
- ubuntu (6)
- bootstrap (10)
- javaee (1)
- 他山石 (7)
- jetbrick (1)
最新评论
-
yubao2008:
[size=x-small]为什么我也这样试了, 就是没有生效 ...
javax.servlet.http.HttpServletResponse 得到 status_code -
chenrl:
...
SpringMVC杂记(十五) spring-mvc controller 的切面 -
LONGTENGLONG:
你好,这样配置的,得到的集合为空,是什么原因?
apache-shiro杂记(一) 统计在线用户数目 -
xiafengfeiwu:
[flash=200,200][url]引用[/url][/f ...
apache-shiro 学习笔记 -
3108493554:
你好 ,有些问题想请教下,加下我qq310849354,你这上 ...
SpringMVC杂记(十二) 自定义Interceptor从Active Directory得到域信息
一) 现在项目中用的javamail和org.springframework.mail.javamail.JavaMailSender来发送电子邮件的,而邮件正文的模板是在spring的配置文件中完成的。
修改起来比较麻烦,并缺乏一些逻辑控制。我决定改造一下,把这些模板性质的东西都用freemarker管理起来。于是就有了这篇文章。
二) 代码和配置
修改起来比较麻烦,并缺乏一些逻辑控制。我决定改造一下,把这些模板性质的东西都用freemarker管理起来。于是就有了这篇文章。
二) 代码和配置
package mail; import java.io.IOException; import java.util.Collection; import javax.mail.internet.MimeMessage; import org.springframework.beans.factory.InitializingBean; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.mail.javamail.MimeMessagePreparator; import org.springframework.ui.freemarker.FreeMarkerTemplateUtils; import org.springframework.util.Assert; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; public class FreeMarkerConfiguredMailSender implements InitializingBean { private Configuration freeMarkerConfiguration; private JavaMailSender javaMailSender; private String encoding = "UTF-8"; // constructor // ----------------------------------------------------------------------- public FreeMarkerConfiguredMailSender() { super(); } public FreeMarkerConfiguredMailSender( Configuration freeMarkerConfiguration, JavaMailSender javaMailSender) { this(); this.freeMarkerConfiguration = freeMarkerConfiguration; this.javaMailSender = javaMailSender; } // send html email, exception thrown maybe // ----------------------------------------------------------------------- public void sendMail(final String[] to, final String from, final String[] cc, final String[] bcc, final String subject, String templateName, Object model) throws IOException, TemplateException { Template template = freeMarkerConfiguration.getTemplate(templateName); final String text = FreeMarkerTemplateUtils.processTemplateIntoString(template, model); javaMailSender.send(new MimeMessagePreparator() { public void prepare(MimeMessage mimeMessage) throws Exception { MimeMessageHelper message = new MimeMessageHelper(mimeMessage, true, encoding); message.setTo(to); message.setFrom(from); message.setCc(cc != null ? cc : new String[0]); message.setBcc(bcc != null ? bcc : new String[0]); message.setSubject(subject != null ? subject : ""); message.setText(text, true); } }); } public void sendMail(final String to, final String from, final String[] cc, final String[] bcc, final String subject, String templateName, Object model) throws IOException, TemplateException { sendMail(new String[]{to}, from, cc, bcc, subject, templateName, model); } public void sendMail(final Collection<String> to, final String from, final Collection<String> cc, final Collection<String> bcc, final String subject, String templateName, Object model) throws IOException, TemplateException { sendMail(_toArray(to), from, _toArray(cc), _toArray(bcc), subject, templateName, model); } public void sendMail(final String to, final String from, final Collection<String> cc, final Collection<String> bcc, final String subject, String templateName, Object model) throws IOException, TemplateException { sendMail(to, from, _toArray(cc), _toArray(bcc), subject, templateName, model); } // send html email quietly // ----------------------------------------------------------------------- public boolean sendMailQuietly(final String[] to, final String from, final String[] cc, final String[] bcc, final String subject, String templateName, Object model) { try { sendMail(to, from, cc, bcc, subject, templateName, model); } catch (IOException e) { return false; } catch (TemplateException e) { return false; } return true; } public boolean sendMailQuietly(final String to, final String from, final String[] cc, final String[] bcc, final String subject, String templateName, Object model) { try { sendMail(new String[]{to}, from, cc, bcc, subject, templateName, model); } catch (IOException e) { return false; } catch (TemplateException e) { return false; } return true; } public boolean sendMailQuietly(final Collection<String> to, final String from, final Collection<String> cc, final Collection<String> bcc, final String subject, String templateName, Object model) { try { sendMail(_toArray(to), from, _toArray(cc), _toArray(bcc), subject, templateName, model); } catch (IOException e) { return false; } catch (TemplateException e) { return false; } return true; } public boolean sendMailQuietly(final String to, final String from, final Collection<String> cc, final Collection<String> bcc, final String subject, String templateName, Object model) { try { sendMail(to, from, _toArray(cc), _toArray(bcc), subject, templateName, model); } catch (IOException e) { return false; } catch (TemplateException e) { return false; } return true; } // inner util method // ------------------------------------------------------------------------------------------------------ private String[] _toArray(Collection<String> collection) { if (collection == null || collection.isEmpty()) return new String[0]; return collection.toArray(new String[0]); } // // ------------------------------------------------------------------------------------------------------ public void afterPropertiesSet() throws Exception { Assert.notNull(encoding); Assert.notNull(freeMarkerConfiguration); Assert.notNull(javaMailSender); freeMarkerConfiguration.setDefaultEncoding(encoding); } // setter and getter // ------------------------------------------------------------------------------------------------------ public JavaMailSender getJavaMailSender() { return javaMailSender; } public void setJavaMailSender(JavaMailSender javaMailSender) { this.javaMailSender = javaMailSender; } public Configuration getFreeMarkerConfiguration() { return freeMarkerConfiguration; } public void setFreeMarkerConfiguration(Configuration freeMarkerConfiguration) { this.freeMarkerConfiguration = freeMarkerConfiguration; } public String getEncoding() { return encoding; } public void setEncoding(String encoding) { this.encoding = encoding; } }
<bean class="mail.FreeMarkerConfiguredMailSender"> <property name="freeMarkerConfiguration"> <bean class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean"> <property name="templateLoaderPath" value="classpath:email-templates" /> <property name="freemarkerSettings"> <props> <prop key="tag_syntax">auto_detect</prop> <prop key="template_update_delay">0</prop> <!-- <prop key="default_encoding">UTF-8</prop> <prop key="output_encoding">UTF-8</prop> --> <prop key="locale">zh_CN</prop> <prop key="date_format">yyyy-MM-dd</prop> <prop key="time_format">HH:mm:ss</prop> <prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop> </props> </property> </bean> </property> <property name="javaMailSender"> <bean class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host" value="smtp.xxx.com" /> <property name="port" value="25" /> <property name="username" value="foo@xxx.com" /> <property name="password" value="password" /> <property name="javaMailProperties"> <props> <prop key="mail.smtp.auth">true</prop> </props> </property> </bean> </property> </bean>
发表评论
-
SpringMVC杂记(十八) ServletRequestAttributes的应用
2014-02-28 12:38 14227看了一下SpringMVC的源代码,原来SpringMVC也提 ... -
SpringWebflow杂记(一) 框架初探,与SpringMVC的集成
2013-10-23 17:18 1718今日研究了一下SpringWebFlow这个项目,作为Spri ... -
SpringMVC杂记(十六) spring-mvc 与 openid4java
2013-10-12 15:25 3879SpringMVC杂记(十六) spring-mvc 与 op ... -
SpringMVC杂记(十五) spring-mvc controller 的切面
2013-08-01 19:42 6148SpringMVC杂记(十五) spring-mvc cont ... -
Spring集成CXF
2013-06-24 15:53 1576Spring集成CXF 零) jar依赖 <dep ... -
SpringMVC杂记(十四) Ajax方式的JSR303认证
2013-06-13 07:29 4527自己定义一个Exception,用来表示数据绑定失败 im ... -
SpringMVC杂记(十三) 使用FreeMarker作为视图层
2013-06-09 11:55 3406实在没什么好说的,直接上配置文件好了 <bean i ... -
SpringMVC杂记(十二) 自定义Interceptor从Active Directory得到域信息
2013-06-04 14:04 3209一)最近项目中要求实现Web应用的SSO(Single Sig ... -
SpringMVC杂记(十一) 使用Excel视图
2013-04-06 16:06 6633SpringMVC杂记(十一) 使用Excel视图 一) 其 ... -
Spring集成junit
2012-12-24 10:43 1510package junit; import org. ... -
SpringMVC杂记(十) 验证码生成
2012-11-06 10:18 2789以前写过一篇关于这个的博客,现在用SpringMVC了,重写一 ... -
SpringMVC杂记(九) 模拟其他类型(非GET,POST)的请求
2012-10-22 10:49 26981) 以前一个小兄弟问我,SpringMVC是否可以使用很多浏 ... -
SpringMVC杂记(八) 使用阿里巴巴的fastjson
2012-07-21 08:27 102771) 国产开源软件要支持的 <dependency& ... -
ActiveMQ学习笔记(二) JMS与Spring
2012-06-24 10:21 7438上文可见,JMS Native API使用起来不是特别方便。好 ... -
我的SpringSecurity实践
2012-04-08 07:49 8988我的SpringSecurity实践 (一) 数据库与实体类 ... -
SpringMVC杂记(七) Jackson与Hibernate LazyLoding无法正常工作解决办法
2012-03-21 13:35 7064SpringMVC杂记(七) Jackson与Hibernat ... -
SpringMVC杂记(六) 下载文件
2012-03-21 09:04 4287SpringMVC杂记(六) 下载文件 1) jar依赖 ... -
SpringMVC杂记(五) JSR303数据验证
2012-03-16 16:30 12441SpringMVC杂记(五) JSR303数据验证 1) 首 ... -
SpringMVC杂记(四) 数据绑定
2012-03-15 13:44 2262SpringMVC杂记(四) 数据绑定 1) 使用java. ... -
SpringMVC杂记(三) 向导型Controller的实现(基于SpringMVC 3.1.1)
2012-03-14 14:59 4669SpringMVC杂记(三) 向导型Controller的实现 ...
相关推荐
3. **JavaMail API**:JavaMail API 是 Java 平台上发送和接收电子邮件的标准库。Spring 集成了 JavaMail,提供了一个高层次的抽象,使得我们可以方便地设置发件人、收件人、主题、正文以及附件等信息。 4. **发送...
163邮箱是中国流行的免费电子邮件服务提供商之一,提供了SMTP和POP3协议供开发者使用,以便发送和接收邮件。在程序中,我们需要配置163邮箱服务器的相关设置,如SMTP服务器地址、端口、用户名和密码,以进行邮件的...
1. JavaMail API:Spring Mail是建立在JavaMail API之上的,JavaMail API是Java中用于发送和接收电子邮件的标准API,提供了丰富的邮件处理功能。 2. Session:JavaMail API中的Session对象是发送邮件的核心,它包含...
JavaMail 是一个强大的开源库,专门用于在Java应用程序中处理电子邮件。它提供了API,使得开发者可以方便地创建、发送和接收邮件。在这个“JavaMail demo”项目中,我们看到的是如何利用Spring框架的特性,结合...
JavaMail 是一个用于处理电子邮件的开源API,它为Java开发者提供了一种方便的方式来发送和接收邮件。在JavaMail API中,我们可以利用SMTP(Simple Mail Transfer Protocol)协议来发送邮件,而使用POP3或IMAP协议来...
Spring Email 是一个在Spring框架中发送电子邮件的强大工具。在现代应用程序中,发送电子邮件是一个常见的功能,无论是用于通知、验证用户账户、发送报告还是其他服务。Spring框架提供了多种方式来实现这个功能,...
1. **JavaMail API**: SpringMail 基于 JavaMail API,这是一个用于创建、发送和接收电子邮件的标准 Java API。它包含了处理 SMTP、POP3 和 IMAP 协议的类。 2. **Session**: JavaMail 中的核心对象是 `Session`,...
总的来说,JavaMail API和Spring框架的邮件发送功能为开发者提供了强大的邮件处理能力,无论是在企业级应用还是小型项目中,都能有效地满足发送和接收电子邮件的需求。这两个库的结合使用,不仅可以方便地处理基本的...
JavaMail 是一个开源的 Java API,它为 Java 程序员提供了处理电子邮件的能力,包括发送、接收和管理邮件。这个最新的版本1.4.3是开发者社区对JavaMail的一次重要更新,对于进行邮件功能开发的J2EE应用程序来说,这...
在处理文件上传和发送电子邮件时,Spring可以使用COS库(cos.jar),但这不是唯一的选择,只有当选择使用COS实现时才需要引入此库。对于DOM操作,dom4j.jar在与Hibernate集成时是必要的,如果你的应用使用了...
而“spring+sendmail+模板+properties+vm”这一主题则涉及到Spring框架中关于电子邮件发送以及使用模板和配置文件的部分。以下是这些知识点的详细说明: 1. **Spring Sendmail**: Spring框架提供了`JavaMailSender`...
1. **JavaMail API**: JavaMail是Java平台上的一个库,它提供了发送和接收电子邮件的标准API。在Java应用中,我们通常使用`javax.mail`包来处理邮件任务。例如,`Session`类代表与邮件服务器的会话,`Message`类用于...
这是一个基于Spring ...总的来说,这个项目展示了如何将Spring Boot、Spring MVC和Mybatis整合在一起,创建一个能够发送和下载电子邮件的应用。开发者可以通过研究这些源码,学习如何在自己的项目中实现类似的功能。
Spring为开发者提供了便捷的方式来发送电子邮件,包括简单的文本邮件、带有附件的邮件以及使用模板引擎如Velocity或Freemarker来定制邮件内容。 首先,确保你的项目包含了Spring的相关库以及Java Mail API的JAR包。...
Java邮件技术是Java编程中的一项重要技能,它允许开发者通过编程方式发送和接收电子邮件。JavaMail API是Java平台上的标准库,提供了丰富的接口和类来处理邮件操作。本篇文章将深入探讨Java邮件的相关知识点。 首先...
JavaMail API是Java中处理邮件的基石,它允许开发者发送和接收电子邮件,包括附件、HTML内容等。 1. **配置Spring Mail**: - 首先,你需要在Spring的配置文件(如`application.properties`或`application.yml`)...
1. **SMTP协议**:SMTP(Simple Mail Transfer Protocol)是电子邮件系统的核心,用于在邮件服务器之间发送邮件。在JavaWeb应用中,我们通常使用JavaMail API来通过SMTP协议发送邮件。 2. **JavaMail API**:...