`

用spring做一个javaMail功能的例子

阅读更多

前言:项目中要做一个发送邮件的功能,在网上搜了一些代码,说的都不是很完善。自己就整理了一个可以运行的项目。需要注意的地方是:如果发送人的邮箱是qq邮箱,那么需要在 设置->账户里面把√打上。spring里面的

<property name="host">
    <value>smtp.126.com</value>
   </property>
要配置成smtp.qq.com

用spring做一个javaMail功能的例子 - xiaojunwei1987 - http://hi.baidu.com/

126邮箱同理。

步骤如下:

用spring做一个javaMail功能。

1、先建一个项目。java项目和web项目均可。

2、需要引入的jar包有:mail.jar,activation.jar(我用的是maven搭建的项目,在pom.xml中依赖了那两个jar包)

3、在MyEclipse的项目里面加入spring的jar包

4、在项目中的applicationContext-init.xml (名字可以任意改)文件中加入如下代码:

<?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.xsd ">

<bean id="mailSender" <property name="host">
    <value>smtp.126.com</value>
   </property>
   <property name="javaMailProperties">
    <props>
     <prop key="mail.smtp.auth">true</prop>
     <prop key="mail.smtp.timeout">25000</prop>
    </props>
   </property>
   <property name="username">
    <value>xiaojunwei_1987</value>
   </property>
   <property name="password">

<!--这里的是配置自己邮箱的密码,这里我输入的是假的,以*代替了,呵呵要不你们就知道我的邮箱密码了-->
    <value>********</value>
   </property>
</bean>
</beans>

java 代码:我自己加的注释,不一定准确哦。

package com.techcenter.mail;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessagePreparator;
public class SpringMail {
public static void main(String[] args) throws Exception {
//读取spring配置文件
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext-init.xml ");
        //强制返回spring邮件发送器
        JavaMailSender sender = (JavaMailSender) ctx.getBean("mailSender");
        //创建对象并初始化
        SpringMail springMail = new SpringMail();          
    //测试发送只有文本信息的简单测试
    springMail.sendTextMail(sender);      
    //测试发送带附件的邮件
    springMail.sendMimeMessage(sender);       
    }  
    private void sendTextMail(JavaMailSender sender) throws Exception {
    //声明spring的简单邮件消息
        SimpleMailMessage mail = new SimpleMailMessage();
        mail.setTo("237888386@qq.com ");      
        mail.setFrom("xiaojunwei_1987@126.com ");
        mail.setSubject("test by amigo");
        mail.setText("spring Mail的简单测试");
        sender.send(mail);      
        System.out.println("成功发送文本文件!");       
    }  
    private void sendMimeMessage(final JavaMailSender sender) throws Exception {
        //附件文件集合
        final List files = new ArrayList();
       //扩展信息介质接口,需自己实现接口中的方法
        MimeMessagePreparator mimeMail = new MimeMessagePreparator() {
            public void prepare(MimeMessage mimeMessage) throws MessagingException {
            //设置接收者信息 ,接收方式:直接发送,接收地址      
               // mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress(""));
                mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress("237888386@qq.com "));
                mimeMessage.setFrom(new InternetAddress("xiaojunwei_1987@126.com "));
                mimeMessage.setSubject("Spring发送带附件的邮件", "gb2312");       
                //多部件的,可以看做一个邮件容器,包含正文、附件等
                Multipart mp = new MimeMultipart();              
                //向Multipart添加正文
                MimeBodyPart content = new MimeBodyPart();
                content.setText("内含spring邮件发送的例子,请查收!");              
                //向MimeMessage添加(Multipart代表正文)
                mp.addBodyPart(content);
                //向Multipart添加附件,可以添加多个附件;
                String path = System.getProperty("user.dir");
                System.out.println(path);

                // 这里是附件的路径,自己测试的时候可能要改的哦!
                files.add("e://hehe.txt");
                files.add(path+"\\src\\test\\java\\com\\techcenter\\mail\\SpringMail.java ");   
                Iterator it = files.iterator();
                //遍历List,把附件放到邮件容器里面
                while(it.hasNext()) {
                    MimeBodyPart attachFile = new MimeBodyPart();
                    String filename = it.next().toString();
                    //文件数据源
                    FileDataSource fds = new FileDataSource(filename);
                    //数据处理器
                    attachFile.setDataHandler(new DataHandler(fds));
                    //设置文件名                 
                    attachFile.setFileName(fds.getName());
                    mp.addBodyPart(attachFile);
                }              
                files.clear();              
                //向Multipart添加MimeMessage
                mimeMessage.setContent(mp);
                mimeMessage.setSentDate(new Date());
            }
        };
        //发送带附件的邮件
        sender.send(mimeMail);      
        System.out.println("成功发送带附件邮件!");
    }
}

分享到:
评论

相关推荐

    SpringUseJavaMailSendEmail(spring使用javamail发送邮件的例子)

    Spring Use JavaMail SendEmail(spring使用javamail发送邮件的例子)

    Spring整合JavaMail发送qq邮件

    Spring整合JavaMail发送qq邮件,极简单的例子。看完就会。。。

    javamail+spring

    javamail与spring结合的简单入门例子

    JavaMail Spring

    JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件...这里提供一个操作JavaMail的例子,可以发送文本邮件,HTML邮件,附件,抄送人。

    开源框架 Spring Gossip

    管理 Bean 从第一个 Spring 应用程式开始,逐步了解何谓依赖注入,以及如何使用 Spring 的容器功能来管理 Bean,了解 Bean 在 Spring 容器中的生命周期。 第一个 Spring 程式 BeanFactory、 ...

    Spring 2.0 开发参考手册

    9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO支持抽象类 11. 使用JDBC进行数据访问 11.1. 简介 11.1.1. Spring ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO支持抽象类 11. 使用JDBC进行数据访问 11.1. 简介 11.1.1. Spring JDBC包结构...

    spring chm文档

    9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO支持抽象类 11. 使用JDBC进行数据访问 11.1. 简介 11.1.1. Spring ...

    spring整合freemarker发送邮件例子

    spring整合freemarker实现发送邮件, html中内嵌图片,添加附件, 解决乱码问题. spring整合freemarker实现发送邮件, html中内嵌图片,添加附件, 解决乱码问题.

    Spring.3.x企业应用开发实战(完整版).part2

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...

    struts2+hibernate+spring源码

    将这数值弹出一个alert并且发信给指定的邮件地址 获取页面内所有地方的以"&lt;&lt; &gt;&gt;"为标示的这个符号代表书名号,获取之中的内容 使用正则表达式&gt;&gt; 功能点: 1)URL抓取页面。 2)正则表达式匹配。 3)邮件系统调用 请注意...

    Spring邮件发送实例

    使用spring封装的JavaMail进行邮件发送的一个例子,这里我用的是Gmail邮箱,如需用其它邮箱服务器,对相应的端口,服务器地址,用户名密码做相应的修改即可

    Spring3.x企业应用开发实战(完整版) part1

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...

Global site tag (gtag.js) - Google Analytics