第25章 Spring的其他高级技术

第25章 Spring的其他高级技术

25.4 实例:发送E-mail

在Spring中通过org.springframework.mail.javamail.JavaMailSenderImpl类可以发送电子邮件。但在使用这个类之前需要做以下准备:

q      JavaMailSenderImpl类除了需要spring.jar外,还需要activation.jar和mail.jar(这两个文件都在Spring的发行包中)。

q      如果使用MyEclipse6.x开发程序,MyEclipse自身带的javaee.jar中的某些类和mail.jar、activation.jar中的相应类冲突。因此,在本节将另建立一个Mailer工程,并只加入和Spring相关的jar包。读者也可以将javaee.jar从MyEclipse中删除。如果Web程序需要HttpServlet、Filter等类时,可以将Tomcat中的相应包加入       工程。

在做完上面的准备工作后,下面来开发一个简单的E-Mail发送程序。为了完成这个程序,需要如下三步。

(1)装配SimpleMailMessage类。在发送E-mail之前,需要指定一些必要的信息。这些信息包括收件人邮箱,发件人邮箱、标题和正文。而这些信息是通过装配SimpleMailMessage类指定的,代码如下:



<bean id="mailMessage" class="org.springframework.mail.SimpleMail Message">

<!-- 收件人邮箱 -->

    <property name="to">

        <value>[email protected]</value>

</property>

<!-- 发件人邮箱 -->

    <property name="from"> 

        <value>[email protected]</value>

</property>

<!-- 邮件主题 -->

    <property name="subject">

        <value>标题</value>

</property>

<!-- 邮件内容 -->

    <property name="text">

        <value>正文</value>

    </property>

</bean>



读者可以将上面的相应信息修改成其他内容。

(2)装配JavaMailSenderImpl类。可以通过JavaMailSenderImpl类的send方法来发送邮件,但发送邮件之前,需要先装配这个类,代码如下:



<bean id="mailSender" class="org.springframework.mail.javamail.JavaMail SenderImpl">

    <!--  配置126的smtp服务器地址  -->

    <property name="host">

        <value>smtp.126.com</value>

</property>

<!--  配置邮箱密码  -->

    <property name="password">

        <value>password</value>

</property>

<!--  配置邮箱登录用户名  -->

    <property name="username">

        <value>user</value>

    </property>

</bean>



在装配JavaMailSenderImpl类时设置了3个属性,host、password和username。其中host属性指定了SMTP服务器的域名(126的SMTP服务器是smtp.126.com)。password和username是为了进行SMTP验证而设置的。目前大多数邮件服务器都要求SMTP验证,也就是说,在发邮件时也得提供身份验证,以防止利用SMTP服务器发送大量垃圾邮件。关于上述3个属性的值,读者可以根据需要,指定自己E-mail所在的SMTP服务器、用户和密码。

(3)编写发送邮件的程序。这个发送邮件的程序需要SimpleMailMessage和JavaMail SenderImpl的对象实例。这两个对象实例可以使用getBean方法从装配文件中获得,代码如下。



package chapter25.mail;

import org.springframework.mail.javamail.JavaMailSenderImpl;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.FileSystemXmlApplication Con- text;

import org.springframework.mail.SimpleMailMessage;

public class SendMail

{

    public static void main(String[] args) throws Exception

    {      

        ApplicationContext context = new FileSystemXmlApplicationContext    ("src\\mail.xml");

        JavaMailSenderImpl mailSender = (JavaMailSenderImpl)context.getBean    ("mailSender");

        SimpleMailMessage mailMessage = (SimpleMailMessage)context.getBean      ("mailMessage");

        mailSender .getJavaMailProperties().put("mail.smtp.auth", "true");                                                   // 进行SMTP身份验证

        mailSender .send(mailMessage);               // 开发发送邮件

    }

}



在编写上面代码时应注意,必须将mail.smtp.auth属性设为true,否则程序不会进行SMTP身份验证。经笔者测试发现,对于使用刚注册的126邮箱发邮件时,可能会抛出MailAuthenticationException异常,这可能是126的SMTP服务器的原因。读者在运行SendMail时应注意这一点,也可以使用其他的邮件服务器来测试这个程序。

原文:http://www1.huachu.com.cn/read/readbookinfo.asp?sectionid=1000001872

你可能感兴趣的:(spring)