`
hqman
  • 浏览: 363230 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

spring 邮件处理 完整示例

    博客分类:
  • java
阅读更多
  项目中email处理总结一下:

1.封装邮件信息类:
 
java 代码
 
  1. /** 
  2.  * Class for sending e-mail messages based on Velocity templates or with 
  3.  * attachments. 
  4.  * 
  5.  * @author wangkai 
  6.  */  
  7. public class MailEngine {  
  8.     private final Log logger = LogFactory.getLog(MailEngine.class);  
  9.     private MailSender mailSender;  
  10.     private VelocityEngine velocityEngine;  
  11.   
  12.     public void setMailSender(MailSender mailSender) {  
  13.         this.mailSender = mailSender;  
  14.     }  
  15.   
  16.     public void setVelocityEngine(VelocityEngine velocityEngine) {  
  17.         this.velocityEngine = velocityEngine;  
  18.     }  
  19.   
  20.     /** 
  21.      * Send a simple message based on a Velocity template. 
  22.      * 
  23.      * @param msg 
  24.      *            the message to populate 
  25.      * @param templateName 
  26.      *            the Velocity template to use (relative to classpath) 
  27.      * @param model 
  28.      *            a map containing key/value pairs 
  29.      */  
  30.     public void sendMessage(SimpleMailMessage msg, String templateName,  
  31.             Map model) {  
  32.         String result = null;  
  33.         try {  
  34.             MimeMessage message = ((JavaMailSenderImpl) mailSender)  
  35.                     .createMimeMessage();  
  36.   
  37.             result = VelocityEngineUtils.mergeTemplateIntoString(  
  38.                     velocityEngine, templateName, "UTF-8", model);  
  39.         } catch (VelocityException e) {  
  40.             e.printStackTrace();  
  41.             logger.error(e.getMessage());  
  42.         }  
  43.         msg.setText(result);  
  44.         send(msg);  
  45.     }  
  46.   
  47.     /** 
  48.      * Send a simple message with pre-populated values. 
  49.      * 
  50.      * @param msg 
  51.      *            the message to send 
  52.      */  
  53.     public void send(SimpleMailMessage msg) {  
  54.         try {  
  55.   
  56.             mailSender.send(msg);  
  57.         } catch (MailException ex) {  
  58.             // log it and go on  
  59.             logger.error(ex.getMessage());  
  60.         }  
  61.     }  
  62.   
  63.     /** 
  64.      * Convenience method for sending messages with attachments. 
  65.      * 
  66.      * @param recipients 
  67.      *            array of e-mail addresses 
  68.      * @param sender 
  69.      *            e-mail address of sender 
  70.      * @param resource 
  71.      *            attachment from classpath 
  72.      * @param bodyText 
  73.      *            text in e-mail 
  74.      * @param subject 
  75.      *            subject of e-mail 
  76.      * @param attachmentName 
  77.      *            name for attachment 
  78.      * @throws MessagingException 
  79.      *             thrown when can't communicate with SMTP server 
  80.      * @author Ben Gill 
  81.      */  
  82.     public void sendMessage(String[] recipients, String sender,  
  83.             ClassPathResource resource, String bodyText, String subject,  
  84.             String attachmentName) throws MessagingException {  
  85.         MimeMessage message = ((JavaMailSenderImpl) mailSender)  
  86.                 .createMimeMessage();  
  87.         // use the true flag to indicate you need a multipart message  
  88.         MimeMessageHelper helper = new MimeMessageHelper(message, true"UTF-8");  
  89.   
  90.         helper.setTo(recipients);  
  91.         helper.setFrom(sender);  
  92.         helper.setText(bodyText);  
  93.         helper.setSubject(subject);  
  94.   
  95.         helper.addAttachment(attachmentName, resource);  
  96.   
  97.         ((JavaMailSenderImpl) mailSender).send(message);  
  98.     }  

2.spring配置文件,xxxx-mail.xml:
 
 
xml 代码
 
  1. <!---->  
  2.     <!---->  
  3.     <!---->  
  4.     <bean id="mailEngine"  
  5.         class="com.linkmed.cas.service.email.MailEngine">  
  6.         <property name="mailSender" ref="mailSender" />  
  7.         <property name="velocityEngine" ref="velocityEngine" />  
  8.     <!---->bean>  
  9.   
  10.     <bean id="mailSender"  
  11.         class="org.springframework.mail.javamail.JavaMailSenderImpl">  
  12.         <property name="host" value="${mail.host}" />  
  13.         <!---->  
  14.          <property name="username" value="${mail.username}"/>  
  15.             <property name="password" value="${mail.password}"/>  
  16.             <property name="javaMailProperties">  
  17.             <value>  
  18.             mail.smtp.auth=${mail.validator}  
  19.             <!---->value>  
  20.             <!---->property>  
  21.     <!---->bean>  
  22.   
  23.     <!---->  
  24.     <bean id="velocityEngine"  
  25.         class="org.springframework.ui.velocity.VelocityEngineFactoryBean">  
  26.         <property name="velocityProperties">  
  27.             <props>  
  28.                 <prop key="resource.loader">class<!---->prop>  
  29.                 <prop key="class.resource.loader.class">  
  30.                     org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader  
  31.                 <!---->prop>  
  32.                 <prop key="velocimacro.library"><!---->prop>  
  33.             <!---->props>  
  34.         <!---->property>  
  35.     <!---->bean>  
  36.   
  37.     <bean id="mailMessage"  
  38.         class="org.springframework.mail.SimpleMailMessage"  
  39.         scope="prototype">  
  40.         <property name="from" value="${mail.default.from}" />  
  41.     <!---->bean>  
说明:模板文件放到classpath的velocity目录下,可自行改。

3.发送者邮件信息,mail.properties(classpath位置):
xml 代码
 
  1. # This properties file is used to configure mail settings in   
  2. # /resources/linkmed-application-service.xml  
  3.   
  4. mail.default.from=dxy.cn <anct125@163.com>  
  5. mail.debug=false  
  6. mail.transport.protocol=smtp  
  7. mail.host=smtp.163.com  
  8. mail.username=anct125  
  9. mail.password=anct125  
  10. mail.validator=true  


4.模板文件,text.vm(classpath的velocity目录下):
你好!${me} 这是模板生成的邮件。

5.使用:
 
java 代码
 
  1. public class MailEngineTest extends BaseTestCase {  
  2.   
  3.     private MailEngine mailEngine;  
  4.   
  5.     private SimpleMailMessage mailMessage;  
  6.   
  7.     public void onSetUp() {  
  8.         mailEngine = (MailEngine) ctx.getBean("mailEngine");  
  9.         mailMessage = (SimpleMailMessage) ctx.getBean("mailMessage");  
  10.     }  
  11.   
  12.     public void testSendMail() {  
  13.         assertNotNull(mailEngine);  
  14.         assertNotNull(mailMessage);  
  15.         mailMessage.setTo("wangkai );  
  16.         mailMessage.setFrom("dxy    );  
  17.         mailMessage.setSubject("mail.mail.mail.标题有的哈哈!");  
  18.         Map
  19.         model.put("user""wangkai");  
  20.   
  21.         model.put("message""test");  
  22.         mailEngine.sendMessage(mailMessage, "register.vm", model);  
  23.     }  
分享到:
评论

相关推荐

    spring-boot示例项目

    本项目示例基于spring boot 最新版本(2.1.9)实现,Spring Boot、Spring Cloud 学习示例,将持续更新…… 在基于Spring Boot、Spring Cloud 分布微服务开发过程中,根据实际项目环境,需要选择、集成符合项目...

    Spring邮件发送源码

    首先,让我们来了解如何配置Spring邮件服务。在Spring的配置文件(如`applicationContext.xml`)中,我们需要定义一个`JavaMailSender` bean。这个bean通常会包含SMTP服务器的信息,如主机名、端口号、用户名和密码...

    spring集成邮件服务

    而Spring集成邮件服务则是一个常见的需求,特别是对于那些需要发送确认邮件、通知或者报告的应用来说。下面将详细阐述Spring如何与JavaMail API结合,实现邮件服务的集成。 首先,我们需要理解JavaMail API。...

    spring+javamail代码示例

    总的来说,这个示例展示了一个基于Spring框架和JavaMail API的邮件发送系统,包括如何配置邮件服务器、创建邮件对象、处理附件以及异步发送邮件。这个系统可以轻松地集成到任何Spring应用程序中,提供灵活且可靠的...

    spring中邮件及定时任务

    关于压缩包中的文件"spring_扩展_邮件及定时任务_2",它很可能包含了示例代码或者配置文件,用于演示如何在Spring项目中实现邮件发送和定时任务。这些文件可能包括了Java源代码、XML配置文件或者YAML配置文件,你...

    Spring邮件发送

    **Spring邮件发送** 在Java开发中,Spring框架提供了一种简单而强大的方式来发送电子邮件。Spring的`JavaMailSender`接口以及其实现类`SimpleMailMessage`和`MailMessage`,使得开发者能够轻松地集成邮件服务到应用...

    spring各种邮件发送

    在"spring各种邮件发送"这个主题中,我们将探讨Spring框架如何帮助开发者实现电子邮件的发送。邮件服务在许多应用场景中都十分常见,例如用户注册确认、密码重置提醒等。 首先,Spring框架提供了`JavaMailSender`...

    java发送邮件 spring发送邮件

    Spring框架以其模块化和灵活性而著名,它包含了一个名为`JavaMailSender`的接口,专门用于处理电子邮件的发送。在这个场景中,我们将深入探讨如何使用Spring框架发送邮件,以及涉及到的相关知识点。 首先,我们需要...

    Spring boog 项目示例

    在这个项目示例中,我们可以看到如何利用 Spring Boot 实现 QQ 登录、手机登录以及邮件服务,并且已经实现了前后端分离的设计模式。 1. **QQ 登录集成** 在 Spring Boot 中集成 QQ 登录通常会使用 OAuth2 协议。...

    activeMQ+spring+springmvc整合示例

    这个"activeMQ+spring+springmvc整合示例"旨在帮助开发者理解如何将这三者结合,以实现消息队列(Message Queue)的功能,提高系统的异步处理能力和负载均衡。以下是关于这一整合的详细知识讲解: 1. **ActiveMQ**:...

    springinaction示例代码

    10. **Spring Batch**:Spring Batch则专注于批量处理任务,提供了强大的批处理功能,包括读取、处理和写入数据,以及错误处理和重试机制。 压缩包中的"Springin Action代码"文件很可能是书中示例代码的集合,通过...

    spring邮件抽象层详解

    总的来说,Spring邮件抽象层为开发者提供了一种方便、灵活的方式来发送电子邮件,无论是简单的文本邮件还是复杂的MIME邮件,都可以通过Spring的API轻松处理。通过适当地配置和使用,可以确保邮件服务的稳定性和可靠...

    SpringBoot中整合Mail实现简单邮件发送示例代码

    在Spring Boot框架中,整合JavaMailSender接口可以方便地实现邮件发送功能。...当然,实际应用中可能需要处理更复杂的邮件场景,例如发送HTML邮件、添加附件等,但这个基础示例为你提供了一个良好的起点。

    spring发送邮件demo

    这通常通过添加`spring-context-support`依赖来完成,该依赖包含了处理邮件发送所需的类。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.springframework &lt;artifactId&gt;spring-context-...

    Spring邮件发送实例

    以下是对Spring邮件发送实例的详细讲解。 首先,我们需要在项目中引入Spring Mail的相关依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.springframework.boot ...

    struts spring 实现简单的邮件发送

    这个项目"struts spring 实现简单的邮件发送"旨在展示如何整合这两个框架来完成邮件发送的功能。 首先,Struts是Apache组织的一个开源项目,它提供了一种模型驱动的方式来构建动态Web应用程序。Struts框架通过控制...

    springdata示例

    在这个"springdata示例"中,我们将探讨如何使用 SpringData 来操作一个简单的 User 表。 1. **SpringData JPA**:在 Spring Data JPA 中,我们通常会创建一个对应的实体类(Entity)来映射数据库中的 User 表。实体...

    spring JavaMailSenderImpl 发送邮件 java

    以下是一个简单的示例,展示了如何在Spring中使用JavaMailSenderImpl发送邮件: ```java @Autowired private JavaMailSender emailSender; public void sendEmail() { SimpleMailMessage message = new ...

Global site tag (gtag.js) - Google Analytics