`

用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("成功发送带附件邮件!");
    }
}

分享到:
评论

相关推荐

    Spring实现JavaMail邮件发送功能

    在IT行业中,Spring框架是Java开发中的一个核心组件,它为构建企业级应用程序提供了广泛的功能。其中,Spring的JavaMail支持使得开发者能够轻松地实现邮件发送功能。在本篇文章中,我们将深入探讨如何利用Spring来...

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

    在IT行业中,Spring框架是Java开发中的一个核心组件,它为构建高质量的、可维护的、松耦合的应用程序提供了强大的支持。JavaMail API则是一个用于处理电子邮件的开放源码库,它允许开发者通过编程方式发送、接收和...

    JavaMail发送和接受邮件的一个小例子

    总的来说,JavaMail是一个强大的工具,它允许开发者用Java编写功能丰富的邮件应用程序。通过理解`Session`、`Message`、`Store`、`Folder`以及`MimeMultipart`和`MimeBodyPart`的用法,你可以构建出能够处理各种邮件...

    JavaMail Spring

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

    spring整合freemarker发送邮件例子

    在IT行业中,Spring框架是Java领域广泛使用的轻量级应用框架,它提供了丰富的功能,包括依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等。而Freemarker则是一种强大的模板引擎,常用于生成动态HTML、XML...

    spring javamail 来发送动态生成的3D图象.doc

    在本文中,我们将探讨如何使用Spring和JavaMail发送动态生成的3D图像,特别是针对Web应用环境。在处理高流量的Web应用时,我们需要避免在服务器上存储大量的3D图像,以节省存储空间。这里的关键是利用JavaMail的特性...

    Spring 3.x企业应用开发实战 附录 A - JavaMail 发送邮件

    以下是一个使用Spring发送简单纯文本邮件的例子: ```java import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; public void sendSimpleMessage...

    spring JavaMailSenderImpl 发送邮件 java

    在IT行业中,Spring框架是Java开发中的一个核心组件,它提供了丰富的功能,包括但不限于依赖注入、面向切面编程以及各种实用工具。其中,Spring的JavaMailSenderImpl是用于发送电子邮件的一个重要工具,它使得开发者...

    spring集成邮件服务

    在IT行业中,Spring框架是Java开发中的一个核心组件,它为构建高质量的、可维护的、松耦合的应用程序提供了强大的支持。而Spring集成邮件服务则是一个常见的需求,特别是对于那些需要发送确认邮件、通知或者报告的...

    java javamail 发送邮件 源代码 例子

    `MimeMessage`是`Message`的一个实现,支持多部分和非文本格式的邮件。通过`MimeMessage`,你可以设置发件人、收件人、主题和邮件正文。`InternetAddress`类用于处理邮件地址。 接着,使用`Transport`类发送邮件。`...

    使用springMail发送带附件的email

    2. **SpringMail**: Spring框架的一个模块,它简化了JavaMail API的使用,通过Spring的依赖注入和配置模型,使得邮件发送变得更加便捷。 3. **配置SpringMail**: 在Spring项目中,我们通常会创建一个`MailSender` ...

    spring第一天课堂笔记

    无论是从技术角度还是从实际应用场景来看,Spring都是一个值得深入学习和使用的框架。通过学习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包结构...

Global site tag (gtag.js) - Google Analytics