Spring 整合javamail 用 gmail 发送邮件

[url]http://www.blogjava.net/zcq87642231/archive/2009/04/22/266999.html[/url]

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("我现在修改了邮件的内容 呵呵呵");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值