Java蜘蛛人 欢迎大家

欢迎大家 来到我的blog , 如果我身边的朋友 有什么不懂可以直接来问我 我会细心的帮助你的. 如果网络上的朋友有什么不懂的 可以加我Java蜘蛛人 QQ48187537
posts - 54, comments - 192, trackbacks - 0, articles - 1

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

    首先不需要往项目的lib里导入jar,但是需要在tomcatlib里导入3jar文件activation.jar jspsmartupload.jarmail.jar 导入这3jar文件,这样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("我现在修改了邮件的内容 呵呵呵");

Feedback

# re: Spring 整合javamail 用 gmail 发送邮件  回复  更多评论   

2009-04-23 11:45 by Java蜘蛛人 --郑成桥
大家有问题就问我

# re: Spring 整合javamail 用 gmail 发送邮件  回复  更多评论   

2009-04-23 13:15 by 杰德。张
郑老师,最好能讲一讲关于webservice的uddi服务器的建立、发布等方面的知识!!

# re: Spring 整合javamail 用 gmail 发送邮件  回复  更多评论   

2009-04-23 14:13 by Java蜘蛛人 --郑成桥
好的 我过段时间会搞个投票的东西 然大家来投 。 票数最多 我就讲。

# re: Spring 整合javamail 用 gmail 发送邮件  回复  更多评论   

2009-05-07 12:33 by 杰德。张
郑大哥,你的freemaker视频不能下载了,能不能在给我提供一个下载地址,谢谢!!!非常想学习学习!!!
zhangjin_2006@126.com

# re: Spring 整合javamail 用 gmail 发送邮件  回复  更多评论   

2009-05-07 14:04 by Java蜘蛛人 --郑成桥
我不是发到你的邮箱里去了吗?

# re: Spring 整合javamail 用 gmail 发送邮件  回复  更多评论   

2009-06-06 22:48 by zjsjava
你这个确定现在能用GMAIL发吗?

# re: Spring 整合javamail 用 gmail 发送邮件  回复  更多评论   

2009-08-12 14:14 by 过路人
非常不错,顶

# re: Spring 整合javamail 用 gmail 发送邮件  回复  更多评论   

2009-08-17 14:28 by 咖啡@可乐
今天来学习哈!

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问