`

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("我现在修改了邮件的内容 呵呵呵");
分享到:
评论

相关推荐

    Spring整合JavaMail发送qq邮件

    下面将详细讲解如何利用Spring整合JavaMail发送QQ邮件。 首先,我们需要在项目中引入JavaMail的相关依赖。在Maven项目中,可以在pom.xml文件中添加如下依赖: ```xml &lt;groupId&gt;com.sun.mail&lt;/groupId&gt; ...

    JavaMail收发Gmail邮件

    在使用JavaMail进行Gmail邮件的收发时,需要注意几个关键点: 1. **SSL加密**: 为了确保数据的安全传输,通常会使用SSL加密技术。 2. **Gmail的SMTP和POP3设置**: - SMTP服务器地址: smtp.gmail.com - SMTP端口: ...

    Spring实现JavaMail邮件发送功能

    `SpringEmailGmail.zip`文件很可能包含了一个示例项目,演示如何配置和使用Spring发送Gmail邮件的完整源代码。通过阅读和学习这个例子,你可以更好地理解和实践上述步骤。 综上所述,Spring结合JavaMail为Java...

    使用JAVAMail代发邮件

    使用 JavaMail 库可以轻松地在 Java 应用程序中发送电子邮件。JavaMail 是一个 Java API,用于在 Java 应用程序中发送和接收电子邮件。它提供了一个抽象层,允许开发者使用不同的电子邮件协议,例如 SMTP、POP3 和 ...

    Gmail邮件通过JavaMail发送(不带附件与带一个附件)

    本教程将详细讲解如何使用JavaMail API在Gmail上发送邮件,包括不带附件和带有一个附件的情况。 首先,JavaMail是一个开源的Java库,它提供了用于处理邮件的标准API。在使用JavaMail发送邮件前,你需要在项目中引入...

    在spring利用javamail,quartz定时发送邮件

    通过上述步骤,我们不仅了解了如何在Spring环境中结合JavaMail和Quartz实现定时邮件发送,而且还深入探索了Spring框架如何简化JavaMail API的使用,以及Quartz如何提供灵活的定时任务调度能力。这种技术组合为Web...

    SpringUseJavaMailSendEmail(spring使用javamail发送邮件的例子)

    总结起来,Spring结合JavaMail API发送邮件的过程主要包括:配置`JavaMailSender` bean,创建邮件消息对象,设置邮件内容和属性,最后通过`JavaMailSender`实例发送邮件。通过这种方式,开发者可以轻松地在Spring...

    springboot集成javamail实现发送邮件功能

    springboot集成javamail,实现发送邮件的功能,可以发送文本类型邮件,也可以发送html格式的邮件,其中整合了mysql、mybatis 具体集成步骤可以参考我的文章: https://www.jianshu.com/p/668d320b4981

    spring结合javamail开发文档

    在实际的应用场景中,使用Spring结合JavaMail发送邮件时需要注意以下几点: 1. **配置安全性**: - 确保邮件服务器的连接使用安全协议,如使用SMTPS代替SMTP。 2. **处理失败情况**: - 在发送邮件失败时,记录...

    利用 spring mail 通过 gmail(SSL) 发邮件

    Spring Mail是一个Java库,它简化了通过JavaMail API发送电子邮件的过程。本教程将详细讲解如何利用Spring Mail通过Gmail的SSL(安全套接层)协议来发送邮件。 首先,我们需要在项目中引入Spring Mail的依赖。如果...

    Spring javaMail发送文本邮件实例

    导入到Myeclipse 即可运行 测试使用的是QQ邮箱 在application.xml中配置的发送邮箱 要到邮箱中设置 POP3/SMTP服务为开。项目不部署到tomcat后启动服务,然后运行test.java 就发送了,。绝对可以发送

    spring+quartz+javamail定时发送邮件

    本项目“spring+quartz+javamail定时发送邮件”结合了Spring框架、Quartz调度器以及JavaMail API,构建了一个能够定时发送邮件的系统。以下将详细介绍这三个关键组件及其整合方式。 首先,Spring框架是一个广泛使用...

    Spring整合Quartz定时发送邮件

    标题“Spring整合Quartz定时发送邮件”涉及到两个主要技术领域:Spring框架和Quartz调度库。这个场景的应用是使用Quartz来安排任务,而Spring则提供了集成环境和邮件服务支持。 首先,Quartz是一个开源的作业调度...

    Spring Boot整合JavaMailSender发送电子邮件

    Spring提供了非常好用的JavaMailSender接口实现邮件发送。在Spring Boot的Starter模块中也为此提供了自动化配置。下面通过实例看看如何在Spring Boot中使用JavaMailSender发送邮件。

    javaMail发送邮件 发送成功 收不到邮件 或收到邮件无主题无收件人乱码

    在使用JavaMail进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将详细探讨这些问题的原因及相应的解决方案。 ##...

    springboot整合JavaMail,实现异步发送邮件功能

    创建好 Message 对象后, 只需要使用邮件发送API 得到 Transport 对象, 然后把 Message 对象传递给 Transport 对象, 并调用它的发送方法, 就可以把邮件发送给指定的邮件服务器。 (3)、Store 类 javax.mail....

    JavaMail 使用163发邮件

    在本教程中,我们将深入探讨如何使用JavaMail通过163邮箱发送邮件。 首先,为了使用JavaMail,我们需要在项目中添加相应的依赖。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;...

    springboot系列教程(十九):springboot整合JavaMail,实现异步发送邮件功能

    springboot系列教程(十九):springboot整合JavaMail,实现异步发送邮件功能

Global site tag (gtag.js) - Google Analytics