您的位置:首页 > 编程语言 > Java开发

spring发生邮件

2013-11-25 21:46 387 查看
Spring发送邮件依赖org.springframework.mail.MailSender接口,该接口有两个方法:

[java] view
plaincopy

public interface MailSender {  

    // 发送简单邮件  

    void send(SimpleMailMessage simpleMessage) throws MailException;  

    // 发送多封邮件  

    void send(SimpleMailMessage[] simpleMessages) throws MailException;  

  

}  

MailSender接口下有两个子成员,关系为:

MailSender←JavaMailSender←JavaMailSenderImpl

 

其中JavaMailSenderImpl封装了发送邮件的方法

 

此外还有辅助类:org.springframework.mail.SimpleMailMessage作为send()的参数

这个类用来设置发送人,收件人,主题,内容等信息

我们可以通过Spring的注入来设置这些信息

 

需要的jar包:

commons-logging.jar(在Spring开发包中的lib/jakarta-commons文件夹下可以找到)

mail.jar (在Spring开发包中的lib/j2ee文件夹下可以找到)

spring.jar(在Spring开发包中的dist文件夹下可以找到)

如果没有Spring开发包,可查看这篇文章:

http://blog.csdn.net/thc1987/archive/2010/03/17/5389120.aspx 

 

======================

一. 简单邮件程序

 

1. 新建一个web工程:mySpringMail

2. 新建一个package:mail

3. 在mail包下新建mail.properties文件,内容如下:

mail.host=smtp.qq.com

mail.username=your username

mail.password=your password

mail.from=your email, example abc@qq.com

mail.to=his/her email

 

这里分别设置了邮件的服务器,用户名,密码,发件人,收件人.这里我们用qq的服务器,也可用sina的

 

4. 在mail包下新建mailMessage.xml文件,内容如下:

[xhtml] view
plaincopy

<?xml version="1.0" encoding="UTF-8" ?>  

<beans xmlns="http://www.springframework.org/schema/beans"  

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  

    xsi:schemaLocation="http://www.springframework.org/schema/beans  

     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  

     http://www.springframework.org/schema/aop  

     http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"  

    xmlns:aop="http://www.springframework.org/schema/aop"  

    xmlns:p="http://www.springframework.org/schema/p">  

      

    <!-- 加载Properties文件 -->  

    <bean id="configurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  

        <property name="locations">  

            <list>  

                <value>classpath:/mail/mail.properties</value>  

            </list>  

        </property>  

    </bean>  

      

    <!-- 申明SimpleMailMessage对象 -->  

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

        <property name="from">  

            <!-- 设置发送方,Jack是发送者的名字 -->  

            <value><!--[CDATA[Jack<${mail.from}>]]--></value>  

        </property>  

        <!-- 设置接收方 -->  

        <property name="to" value="${mail.to}" />  

        <!-- 查看SimpleMailMessage源码还可以注入标题,内容等 -->  

    </bean>  

      

    <!-- 申明JavaMailSenderImpl对象 -->  

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

        <property name="defaultEncoding" value="UTF-8" />  

        <property name="host" value="${mail.host}" />  

        <property name="username" value="${mail.username}" />  

        <property name="password" value="${mail.password}" />  

        <property name="javaMailProperties">  

            <props>  

                <!-- 设置认证开关 -->  

                <prop key="mail.smtp.auth">true</prop>  

                <!-- 启动调试开关 -->  

                <prop key="mail.debug">true</prop>  

            </props>  

        </property>  

    </bean>  

      

</beans>  

 

已有相关注释,不再说明

 

5. 在mail包中新建测试文件:SpringSimpleMailTest.java,内容如下:

[java] view
plaincopy

public class SpringSimpleMailTest {  

    public static void main(String[] args) {  

        ApplicationContext actx = new ClassPathXmlApplicationContext(  

                "mail/mailMessage.xml");  

        MailSender ms = (MailSender) actx.getBean("mailSender");  

        SimpleMailMessage smm = (SimpleMailMessage) actx.getBean("mailMessage");  

        // 主题,内容  

        smm.setSubject("你好");  

        smm.setText("这个是一个通过Spring框架来发送邮件的小程序");  

        ms.send(smm);  

    }  

}  

 

运行,如果配置没有错的话会收到邮件,如图:



===========================

二. 发送带附件的程序:

 

Spring提供了两个类:

org.springframework.mail.javamail.MimeMailMessage (这个类类似于SimpleMailMessage,都继承MailMessage)

org.springframework.mail.javamail.MimeMessageHelper

 

MimeMessageHelper是个辅助类,它封装了javax.mail.internet.MimeMessage

提供对附件,内嵌HTML的支持

 

此外在发送附件程序时,还会用到一个回调接口:MimeMessagePreparator,

并实现该接口中的void prepare(MimeMessage mimeMessage)方法

 

1. 在mail包中新建类:SpringFileMailTest.java,内容如下:

[java] view
plaincopy

public class SpringFileMailTest {  

    public static void main(String[] args) {  

        ApplicationContext actx = new ClassPathXmlApplicationContext(  

        "mail/mailMessage.xml");  

        JavaMailSender jms = (JavaMailSender)actx.getBean("mailSender");  

        jms.send(new MimeMessagePreparator() {  

            @Override  

            public void prepare(MimeMessage mimeMessage) throws Exception {  

                // true表示复杂邮件  

                MimeMessageHelper mmh = new MimeMessageHelper(mimeMessage,true);  

                // 设置发送人,收件人,主题,内容  

                mmh.setFrom("发送人邮箱");  

                mmh.setTo("收件人邮箱");  

                mmh.setSubject("附件程序");  

                mmh.setText("查看附件");  

                  

                // 添加附件,加载文件方式有多样,可以通过源码进行查看  

                mmh.addAttachment("1.jpg", new File("D:/1.jpg")); // D盘文件  

                mmh.addAttachment("mailMessage.xml", new ClassPathResource("mail/mailMessage.xml"));  

            }  

        });  

    }  

}  

 

其它不需配置,运行程序即可查看有无发送成功,如图:



 

 

=============================

三. 发送含有HTML内嵌资源的邮件

比方说邮件里面有张图片或者一个链接,点击图片就会跳转到指定的页面

 

这里还是用到了MimeMessageHelper类,添加资源用到了addInline()方法

 

1. 新建SpringHtmlMailTest.java类,内容如下:

[java] view
plaincopy

public class SpringHtmlMailTest {  

    public static void main(String[] args) {  

        ApplicationContext actx = new ClassPathXmlApplicationContext(  

        "mail/mailMessage.xml");  

        JavaMailSender jms = (JavaMailSender)actx.getBean("mailSender");  

        jms.send(new MimeMessagePreparator() {  

            @Override  

            public void prepare(MimeMessage mimeMessage) throws Exception {  

                MimeMessageHelper mmh = new MimeMessageHelper(mimeMessage,true);  

                // 发送人,收件人,主题,内容  

                mmh.setFrom("发送人邮箱");  

                mmh.setTo("收件人邮箱");  

                mmh.setSubject("HTML和内嵌资源的邮件 程序");  

                  

                // 下面两行顺序不能颠倒  

                // 添加HTML和内嵌资源  

                mmh.setText("你好,点击图片跳转:<a href="http://www.baidu.com" mce_href="http://www.baidu.com"><img src="cid:logo" mce_src="cid:logo" /></a>",true);  

                // 这里的logo要与cid:logo一致,不然无法显示图片  

                mmh.addInline("logo", new ClassPathResource("mail/baidu.gif"));  

            }  

        });  

    }  

}  

 

其它不需配置,运行该文件即可,如图:



 

demo下载:

http://d.download.csdn.net/down/2620301/thc1987
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: