最近项目中需要发送邮件的功能,于是百度一大把例子。但是有很多都是一样的,一点特点都没有。所以决定整理一番。

        在spring2.X以后的版本就提供了org.springframework.mail来解决javaMail的集成问题。org.springframework.mail.javamail.JavaMailSenderImpl就是基于JavaMail API提供的MailSender实现类。这个实现类提供的功能已经非常完善了。支持各种类型的邮件的发送。代码量也大大减少。下面就用一个例子来说明它的优越性吧。
        spring集成javaMail肯定是要配置一个bean的,当然也可以在代码里写死,但是不推荐。spring关键代码如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!-- 配置MailSender -->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <!-- 邮件服务器 -->
    <property name="host" value="smtp.163.com" />
    <!-- 端口 -->
    <property name="port" value="25" />
    <!-- 你的邮箱 -->
    <property name="username" value="" />
    <!-- 邮箱密码 -->
    <property name="password" value="" />
    <property name="javaMailProperties">
        <props>
            <!-- 是否进行身份认证 -->
            <prop key="mail.smtp.auth">true</prop>
            <!-- 是否采用SSL登录 -->
            <prop key="mail.smtp.starttls.enable">true</prop>
        </props>
    </property>
</bean>
        最关键的一步做好了,现在写个方法测试一下。先写个比较简单的纯文本邮件发送方法吧。 关键代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public static void simpleMail() {
        try {
            // 使用Spring提供的MailSender
            ApplicationContext app = new ClassPathXmlApplicationContext(
                    "spring-mail.xml");
            JavaMailSender mailSender = (JavaMailSender) app
                    .getBean("mailSender");
            // 创建一个纯文本邮件
            SimpleMailMessage mail = new SimpleMailMessage();
            // 发送方
            mail.setFrom(YourMail);
            // 接收人
            mail.setTo(ToMail);
            // 邮件标题
            mail.setSubject("测试简单邮件发送");
            // 内容
            mail.setText("测试使用SpringMailSender发送邮件");
            // 发送
            mailSender.send(mail);
            System.out.println("邮件发送成功!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
        YourMail、ToMail自己设定哈,我的就不暴露出来了。跑一下看看的。控制台输出发送成功,去邮箱看看的。如图:
        刚一打开FoxMail就提示收到邮件了,还是比较顺利。如果要发送个附件,汇报一下工作呢。这个方法是不满足要求的,那就再写个方法吧。关键代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public static void attachedFileMail() {
        try {
            ApplicationContext app = new ClassPathXmlApplicationContext(
                    "spring-mail.xml");
            JavaMailSender mailSender = (JavaMailSender) app
                    .getBean("mailSender");
            MimeMessage mime = mailSender.createMimeMessage();
            // multipart模式 为true时发送附件 可以设置html格式
            MimeMessageHelper messageHelper = new MimeMessageHelper(mime, true,
                    "utf-8");
            // 发送方
            messageHelper.setFrom(YourMail);
            // 接收人
            messageHelper.setTo(ToMail);
            // 邮件标题
            messageHelper.setSubject("测试包含附件邮件发送");
            // true 表示启动HTML格式的邮件
            messageHelper
                    .setText(
                            "<html><head></head><body><h3>你好:附件中有惊喜,请查收!</h3></body></html>",
                            true);
            // 附件
            FileSystemResource file = new FileSystemResource(new File(
                    "D:\\a.xls"));
            messageHelper.addAttachment("a.xls", file);
            // 发送
            mailSender.send(mime);
            System.out.println("邮件发送成功!");
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
        运行一下,又成功了。刷新邮箱看看的。
 
 
        还是比较简单吧,相信这个代码已经表达的相当透彻了,如果还有不明白的,去我的网盘下载吧。地址:
注意:下载的demo还不能运行,需要自己在xml已经以及java代码中设置邮箱和密码。

Java-利用spring发送邮件的更多相关文章

  1. java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板

    java 利用spring JavaMailSenderImpl发送邮件,支持普通文本.附件.html.velocity模板 博客分类: Java Spring   本文主要介绍利用JavaMailS ...

  2. java利用commons-email发送邮件并进行封装

    本例中利用commons-email发送邮件并进行封装,支持html内容和附件:Commons Email是Apache的Commons子项目下的一个邮件客户端组件,它是基于JavaMail的,大大简 ...

  3. java web spring 发送邮件

    package com.ws.common.mail; import java.io.File; import javax.mail.internet.MimeMessage; import java ...

  4. 利用spring boot创建java app

    利用spring boot创建java app 背景 在使用spring框架开发的过程中,随着功能以及业务逻辑的日益复杂,应用伴随着大量的XML配置和复杂的bean依赖关系,特别是在使用mvc的时候各 ...

  5. [Java][web]利用Spring随时随地获得Request和Session

    利用Spring随时随地获得Request和Session 一.准备工作: 在web.xml中加入 <listener> <listener-class> org.spring ...

  6. 利用spring AOP 和注解实现方法中查cache-我们到底能走多远系列(46)

    主题:这份代码是开发中常见的代码,查询数据库某个主表的数据,为了提高性能,做一次缓存,每次调用时先拿缓存数据,有则直接返回,没有才向数据库查数据,降低数据库压力. public Merchant lo ...

  7. java工作流软件发送邮件的方案

    利用javamail的功能将发送邮件的功能集成到java工作流系统中.javamail包提供有发送邮件的方法,设置发送人地址,收件人地址,抄送,主题,邮件服务器地址,认证用户等信息,再调用javama ...

  8. 【JAVA】Spring 数据源配置整理

            在Spring中,不但可以通过JNDI获取应用服务器的数据源,也可以直接在Spring容器中配置数据源,此外,还可以通过代码的方式创建一个数据源,以便进行无依赖的单元测试. 配置数据源 ...

  9. [Java] 使用 Spring 2 Portlet MVC 框架构建 Portlet 应用

    转自:http://www.ibm.com/developerworks/cn/java/j-lo-spring2-portal/ Spring 除了支持传统的基于 Servlet 的 Web 开发之 ...

  10. 利用spring自己实现观察者模式

    利用spring,自己实现的一个观察者模式,写着玩玩,目的是为了加深理解,下次用Spring自带的玩一玩. 首先我们定义一个侦听类接口 package com.hyenas.common.listen ...

随机推荐

  1. 用wget实现cookie欺骗

    用wget实现cookie欺骗 . 分析登录界面的html代码 页面在 http://bbs.linuxeden.com/ <form. id="loginform" met ...

  2. DevSecOps简介(二)

    越来越多的组织机构开始采取 DevOps 实践,作为呼应,本文将概括强调很多人认为这一实践缺失的部分:安全.随着 NV (网络虚拟化) 和 NFV (网络功能虚拟化)的使用率逐步攀升,在开发和部署流程 ...

  3. Android中的Context详解

    前言:本文是我读<Android内核剖析>第7章 后形成的读书笔记 ,在此向欲了解Android框架的书籍推荐此书. 大家好,  今天给大家介绍下我们在应用开发中最熟悉而陌生的朋友---- ...

  4. 2014多校第一场 E 题 || HDU 4865 Peter's Hobby (DP)

    题目链接 题意 : 给你两个表格,第一个表格是三种天气下出现四种湿度的可能性.第二个表格是,昨天出现的三种天气下,今天出现三种天气的可能性.然后给你这几天的湿度,告诉你第一天出现三种天气的可能性,让你 ...

  5. hibernate初次配置问题

    1.自动创建表结构 在hibernate.cfg.xml配置文件中修改 <property name="hibernate.hbm2ddl.auto">update&l ...

  6. Textures

    LPDIRECT3DVERTEXBUFFER9 g_VertexBuffer=NULL; //顶点缓存 LPDIRECT3DTEXTURE9 g_Texture=NULL;//纹理对象 bool In ...

  7. lintcode:二叉树的所有路径

    二叉树的所有路径 给一棵二叉树,找出从根节点到叶子节点的所有路径. 样例 给出下面这棵二叉树: 1 / \ 2 3 \ 5 所有根到叶子的路径为: [ "1->2->5" ...

  8. hdu 4762 Cut the Cake (大数乘法)

    猜公式: ans=n/m^(n-1) #include<stdio.h> #include<string.h> struct BigNum { ]; int len; }; i ...

  9. SSDP 简单服务发现协议

    http://blog.csdn.net/lilypp/article/details/6631951

  10. 物联网操作系统Hello China V1.76(PC串口版)版本发布

    作为向ARM平台移植的基线版本,经过三个多月的努力,Hello China V1.76终于完成并发布.相对原来发布的V1.75版本,该版本主要做了如下修改: 彻底去掉了原来版本源代码中的C++特性,采 ...