`

Spring 整合javamail 用 gmail 发送邮件

阅读更多
http://www.blogjava.net/zcq87642231/archive/2009/04/22/266999.html 

Spring整合javamail成功之后,把大量的代码配置到spring的配置文件里了,从而降低了Javamail对邮箱、端口、协议、主题、内容…… 的耦合。在客户端上只需要调用一行代码就可以发送邮件了。

    首先不需要往项目的lib里导入jar,但是需要在tomcat的lib里导入3个jar文件activation.jar ,jspsmartupload.jar,mail.jar 导入这3个jar文件,这样tomcat就不会报错了。
SendManagerService .java

package com.cgt.itspiderman.service.email;

public interface SendManagerService {
    public void sendMail(String email); 
}

定义一个发送邮件的接口.
SendManagerServiceImp.java
package com.cgt.itspiderman.service.email;

import javax.mail.Message;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessagePreparator;

public class SendManagerServiceImp implements SendManagerService {

    private JavaMailSender mailSender;
    
    private SimpleMailMessage message;
        
    public void sendMail(final String email) {
        // TODO Auto-generated method stub
        
        MimeMessagePreparator preparator = new MimeMessagePreparator()
        {
            public void prepare(MimeMessage mimeMessage) throws Exception {
                
                mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(email));
                mimeMessage.setFrom(new InternetAddress(message.getFrom()));
                mimeMessage.setSubject(message.getSubject(),"gbk");
                mimeMessage.setText(message.getText(),"gbk");
            }
        };
        mailSender.send(preparator);
    
    }
    
    public JavaMailSender getMailSender() {
        return mailSender;
    }

    public void setMailSender(JavaMailSender mailSender) {
        this.mailSender = mailSender;
    }

    public SimpleMailMessage getMessage() {
        return message;
    }

    public void setMessage(SimpleMailMessage message) {
        this.message = message;
    }

}

发送邮件的实现类.

然后在WEB-INF下面创建一个文件messages.properties    以后修改配置信息直接在这里修改就可以了。
host=smtp.gmail.com
username=zhengchengqiaobusiness@gmail.com
password=xxxxxx
port=465
mail.smtp.auth=true
mail.smtp.timeout=25000
mail.smtp.starttls.enable=true
mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
mail.smtp.socketFactory.fallback=false
from=zhengchengqiaobusiness@gmail.com
subject=\u6807\u9898
text=\u5185\u5BB9\u554A

applicationContext.xml
  .......................

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
      <property name="locations">
        <list>
           <value>WEB-INF/mail.properties</value>
        </list> 
      </property> 
    </bean>

    <!-- gmail 发送邮箱的配置文件 -->
       <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
           <property name="host">
               <value>${host}</value>
           </property>       
           <property name="username">
               <value>${username}</value>
           </property>
           <property name="password">
               <value>${password}</value>
           </property>
           <property name="port">
               <value>${port}</value>
           </property>
           <property name="javaMailProperties">
               <props>
                   <prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
                   <prop key="mail.smtp.timeout">${mail.smtp.timeout}</prop>
                   <prop key="mail.smtp.starttls.enable">${mail.smtp.starttls.enable}</prop>
                   <prop key="mail.smtp.socketFactory.class">${mail.smtp.socketFactory.class}</prop>
                   <prop key="mail.smtp.socketFactory.fallback">${mail.smtp.socketFactory.fallback}</prop> 
               </props>
           </property>
       </bean>
       <bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage">
           <property name="from">
               <value>${from}</value>
           </property>
           <property name="subject">
               <value>${subject}</value>
           </property>
           <property name="text">
               <value>${text}</value>
           </property>
       </bean>
       <bean id="sendmail" class="com.cgt.itspiderman.service.email.SendManagerServiceImp">
           <property name="mailSender" ref="mailSender"></property>
           <property name="message" ref="mailMessage"></property>
       </bean>
       <!-- end -->  

............................

public static void main(String[] args) {
        
        ApplicationContext context= null;
        context = new ClassPathXmlApplicationContext("applicationContext.xml");
        SendManagerService sms=    (SendManagerService)context.getBean("sendmail");
        sms.sendMail("zhengchengqiaobusiness@gmail.com");
    }

如果是在struts2里使用的话需要在Action里加上private SendManagerService sendemail;(加上get和set),然后在spring里配置这个Action的时候加上<property name="sendemail" ref="sendmail"></property>
然后在Action里调用下面这一行代码就可以发送了。
sendemail.sendMail("zhengchengqiaobusiness@gmail.com");
  写到这里大家会问,如果需要动态的修改这个邮件的内容呢?方法很简单
  WebApplicationContext context=WebApplicationContextUtils.getRequiredWebApplicationContext(ServletActionContext.getServletContext());
        ((SimpleMailMessage) context.getBean("mailMessage")).setText("我现在修改了邮件的内容 呵呵呵");
分享到:
评论

相关推荐

    java 发送邮件 spring发送邮件Mail

    Spring框架提供了一种优雅的方式来处理这个任务,它整合了JavaMailSender接口和JavaMail API,使得在Java应用程序中发送邮件变得更加简单。让我们深入探讨这个主题。 首先,JavaMail API是Java用来处理邮件收发的...

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

    在Spring Boot框架中,整合JavaMailSender接口可以方便地实现邮件发送功能。Spring Boot通过自动配置简化了这个过程,使得开发者无需过多关注底层配置,只需少量代码就能完成邮件的发送。下面将详细介绍如何在Spring...

    SpringBoot整合发送邮件

    在Java开发中,Spring Boot框架提供了便捷的方式来整合各种服务,包括发送邮件的功能。Spring Boot的邮件服务基于JavaMailSender接口,使得我们可以轻松地配置并发送电子邮件。本文将深入探讨如何在Spring Boot应用...

    Spring mail 发送邮件

    通过集成Spring Mail,开发者可以轻松地将邮件发送功能整合到他们的应用中。本篇将深入探讨如何使用Spring Mail发送邮件,以及它背后的实现原理。 首先,我们需要在项目中引入Spring Mail的依赖。通常,这可以通过...

    SpringBoot中整合Mail实现发送模板邮件示例代码

    在Spring Boot框架中,整合JavaMailSender接口可以方便地实现邮件发送功能,特别是发送模板邮件,这在企业级应用中非常常见,例如用于发送验证邮件、通知消息等。本示例将详细介绍如何在Spring Boot项目中配置并使用...

    enviadorEmail:使用Spring Boot发送用Java编写的电子邮件的服务

    通过阅读和学习这些代码,你可以更好地理解如何在Spring Boot项目中整合JavaMail服务,实现自动化发送电子邮件的功能。这是一个实用的技能,对于企业内部通知、客户沟通或者自动化流程都有广泛的应用价值。

    自己开发的JAVA Web Email邮件系统

    【标签】:“JAVA Email”指的是使用JAVA语言处理电子邮件的程序设计,这可能涉及到JavaMail API,这是一个开源库,为开发者提供了处理邮件的标准API,可以实现邮件的发送、接收和解析。邮件客户端则是用户与邮件...

    公司招聘异地笔试题.doc

    本文介绍了四个与IT相关的知识点:Spring与Hibernate的整合配置、根据XML Schema生成XML文档、模拟登录并获取邮件列表以及使用POP3协议收取Gmail邮件。这些知识点涵盖了企业级应用开发中的常见场景和技术,对于深入...

Global site tag (gtag.js) - Google Analytics