`

Spring 整合javamail 用 gmail 发送邮件

    博客分类:
  • JAVA
阅读更多

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

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


 SendManagerService .java

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->package com.cgt.itspiderman.service.email;

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

 定义一个发送邮件的接口.


SendManagerServiceImp.java

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->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    以后修改配置信息直接在这里修改就可以了。

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->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

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->  .......................

<
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 --> 

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


<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->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");
  写到这里大家会问,如果需要动态的修改这个邮件的内容呢?方法很简单
     

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->  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