通过Spring Mail Api发送邮件

使用Java Mail API来发送邮件也很容易实现,但是最近公司一个同事封装的邮件API实在让我无法接受,于是便打算改用Spring Mail API来发送邮件,顺便记录下这篇文章。

【Spring Mail API】

Spring Mail API都在org.springframework.mail及其子包org.springframework.mail.javamail中封装,且只提供了邮件发送的封装。
SimpleMailMessage: 对邮件的一个简单封装,只能用于表示一个纯文本的邮件,也不能包含附件等。
JavaMailSenderImpl: 邮件发送器,主要提供了邮件发送接口、透明创建Java Mail的MimeMessage、及邮件发送的配置(如:host/port/username/password...)。
MimeMailMessage、MimeMessageHelper:对MimeMessage进行了封装。Spring还提供了一个回调接口MimeMessagePreparator, 用于准备JavaMail的MIME信件
一下代码转载自:http://www.blogjava.net/tangzurui/archive/2008/12/08/244953.html

1.发送简单的文本邮件

?


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

33

34

35

36

37

38

39

40

41

42

43

44

package net.xftzr.mail;

import java.util.Properties;

import org.springframework.mail.SimpleMailMessage;

import org.springframework.mail.javamail.JavaMailSenderImpl;

/**

 * 本类测试简单邮件 直接用邮件发送

 *

 * @author Administrator

 *

 */

public class SingleMailSend

{

    public static void main(String args[])

    {

        JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();

        // 设定mail server

        senderImpl.setHost(" smtp.163.com ");

        // 建立邮件消息

        SimpleMailMessage mailMessage = new SimpleMailMessage();

        // 设置收件人,寄件人 用数组发送多个邮件

        // String[] array = new String[] {"[email protected]","[email protected]"};

        // mailMessage.setTo(array);

        mailMessage.setTo(" [email protected] ");

        mailMessage.setFrom(" [email protected] ");

        mailMessage.setSubject(" 测试简单文本邮件发送! ");

        mailMessage.setText(" 测试我的简单邮件发送机制!! ");

        senderImpl.setUsername(" userName "); // 根据自己的情况,设置username

        senderImpl.setPassword(" password "); // 根据自己的情况, 设置password

        Properties prop = new Properties();

        prop.put(" mail.smtp.auth ", " true "); // 将这个参数设为true,让服务器进行认证,认证用户名和密码是否正确

        prop.put(" mail.smtp.timeout ", " 25000 ");

        senderImpl.setJavaMailProperties(prop);

        // 发送邮件

        senderImpl.send(mailMessage);

        System.out.println(" 邮件发送成功.. ");

    }

}

2.发送简单的html邮件

org.springframework.mail.javamail.MimeMessageHelper是处理JavaMail邮件常用的顺手组件之一。它可以让你摆脱繁复的javax.mail.internetAPI类

?


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

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

package net.xftzr.mail;

import java.util.Properties;

import javax.mail.internet.MimeMessage;

import org.springframework.mail.javamail.JavaMailSenderImpl;

import org.springframework.mail.javamail.MimeMessageHelper;

/**

 * 本类测试html邮件

 *

 * @author sunny

 *

 */

public class HTMLMailDemo

{

    /**

     * @param args

     */

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

    {

        JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();

        // 设定mail server

        senderImpl.setHost("smtp.163.com");

        // 建立邮件消息,发送简单邮件和html邮件的区别

        MimeMessage mailMessage = senderImpl.createMimeMessage();

        MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage);

        // 设置收件人,寄件人

        messageHelper.setTo("[email protected]");

        messageHelper.setFrom("[email protected]");

        messageHelper.setSubject("测试HTML邮件!");

        // true 表示启动HTML格式的邮件

        messageHelper

                .setText(

                        "<html><head></head><body><h1>hello!!spring html Mail</h1></body></html>",

                        true);

        senderImpl.setUsername("username"); // 根据自己的情况,设置username

        senderImpl.setPassword("password"); // 根据自己的情况, 设置password

        Properties prop = new Properties();

        prop.put("mail.smtp.auth", "true"); // 将这个参数设为true,让服务器进行认证,认证用户名和密码是否正确

        prop.put("mail.smtp.timeout", "25000");

        senderImpl.setJavaMailProperties(prop);

        // 发送邮件

        senderImpl.send(mailMessage);

        System.out.println("邮件发送成功..");

    }

}

3.发送嵌套图片的邮件
Email允许添加附件,也允许在multipart信件中内嵌资源。内嵌资源可能是你在信件中希望使用的图像,或者样式表,但是又不想把它们作为附件。

?


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

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

package net.xftzr.mail;

import java.io.File;

import java.util.Properties;

import javax.mail.internet.MimeMessage;

import org.springframework.core.io.FileSystemResource;

import org.springframework.mail.javamail.JavaMailSenderImpl;

import org.springframework.mail.javamail.MimeMessageHelper;

/**

 * 本类测试邮件中嵌套图片

 *

 * @author sunny

 *

 */

public class AttachedImageMail

{

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

    {

        JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();

        // 设定mail server

        senderImpl.setHost("smtp.163.com");

        // 建立邮件消息,发送简单邮件和html邮件的区别

        MimeMessage mailMessage = senderImpl.createMimeMessage();

        // 注意这里的boolean,等于真的时候才能嵌套图片,在构建MimeMessageHelper时候,所给定的值是true表示启用,

        // multipart模式

        MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,

                true);

        // 设置收件人,寄件人

        messageHelper.setTo("[email protected]");

        messageHelper.setFrom("[email protected]");

        messageHelper.setSubject("测试邮件中嵌套图片!!");

        // true 表示启动HTML格式的邮件

        messageHelper.setText(

                "<html><head></head><body><h1>hello!!spring image html mail</h1>"

                        + "<img src=\"cid:aaa\"/></body></html>", true);

        FileSystemResource img = new FileSystemResource(new File("g:/123.jpg"));

        messageHelper.addInline("aaa", img);

        senderImpl.setUsername("username"); // 根据自己的情况,设置username

        senderImpl.setPassword("password"); // 根据自己的情况, 设置password

        Properties prop = new Properties();

        prop.put("mail.smtp.auth", "true"); // 将这个参数设为true,让服务器进行认证,认证用户名和密码是否正确

        prop.put("mail.smtp.timeout", "25000");

        senderImpl.setJavaMailProperties(prop);

        // 发送邮件

        senderImpl.send(mailMessage);

        System.out.println("邮件发送成功..");

    }

}

说明:嵌入图片<img src=\"cid:aaa\"/>,其中cid:是固定的写法,而aaa是一个contentId。

4.发送包含附件的邮件

?


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

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

package net.xftzr.mail;

import java.io.File;

import java.util.Properties;

import javax.mail.internet.MimeMessage;

import org.springframework.core.io.FileSystemResource;

import org.springframework.mail.javamail.JavaMailSenderImpl;

import org.springframework.mail.javamail.MimeMessageHelper;

public class AttachedFileMail

{

    /**

     * 本类测试的是关于邮件中带有附件的例子

     *

     * @param args

     */

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

    {

        JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();

        // 设定mail server

        senderImpl.setHost("smtp.163.com");

        // 建立邮件消息,发送简单邮件和html邮件的区别

        MimeMessage mailMessage = senderImpl.createMimeMessage();

        // 注意这里的boolean,等于真的时候才能嵌套图片,在构建MimeMessageHelper时候,所给定的值是true表示启用,

        // multipart模式 为true时发送附件 可以设置html格式

        MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,

                true, "utf-8");

        // 设置收件人,寄件人

        messageHelper.setTo("[email protected]");

        messageHelper.setFrom("[email protected]");

        messageHelper.setSubject("测试邮件中上传附件!!");

        // true 表示启动HTML格式的邮件

        messageHelper.setText(

                "<html><head></head><body><h1>你好:附件中有学习资料!</h1></body></html>",

                true);

        FileSystemResource file = new FileSystemResource(

                new File("g:/test.rar"));

        // 这里的方法调用和插入图片是不同的。

        messageHelper.addAttachment("test.rar", file);

        senderImpl.setUsername("username"); // 根据自己的情况,设置username

        senderImpl.setPassword("password"); // 根据自己的情况, 设置password

        Properties prop = new Properties();

        prop.put("mail.smtp.auth", "true"); // 将这个参数设为true,让服务器进行认证,认证用户名和密码是否正确

        prop.put("mail.smtp.timeout", "25000");

        senderImpl.setJavaMailProperties(prop);

        // 发送邮件

        senderImpl.send(mailMessage);

        System.out.println("邮件发送成功..");

    }

}

时间: 2024-11-03 03:10:58

通过Spring Mail Api发送邮件的相关文章

Spring Quartz结合Spring mail定期发送邮件

文件配置如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework

javax.mail API

打开JavaMail.jar文件,我们将发现在javax.mail的包下面存在着一些核心类:Session.Message.Address.Authenticator.Transport.Store.Folder.而且在 javax.mail.internet包中还有一些常用的子类. A.Session Session类定义了基本的邮件会话.就像Http会话那样,我们进行收发邮件的工作都是基于这个会话的.Session对象利用了java.util.Properties对象获得了邮件服务器.用户名

项目一:第十四天 1.在realm中动态授权 2.Shiro整合ehcache 缓存realm中授权信息 3.动态展示菜单数据 4.Quartz定时任务调度框架—Spring整合javamail发送邮件 5.基于poi实现分区导出

1 Shiro整合ehCache缓存授权信息 当需要进行权限校验时候:四种方式url拦截.注解.页面标签.代码级别,当需要验证权限会调用realm中的授权方法   Shiro框架内部整合好缓存管理器,整合ehcache环境,只需要配置即可.     <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache-core</artifactId> <version>

Spring+Velocity模板发送邮件

Spring+Velocity模板发送邮件 1.在eclipse中新建一个Java Project, 命名为spring-velocity-mail 2.在项目下新建一个lib目录,导入需要的jar包 依赖包如下: commons-collections-3.2.1.jar commons-lang-2.6.jar commons-logging-1.2.jar mail.jar spring-beans-3.2.2.jar spring-context-3.2.2.jar spring-con

笔记本玩linux server -- centos6 mail命令 发送邮件

安装了centos的笔记本没有鼠标操作也不方便,两个笔记本都放在桌面上操作也十分不便,因此windows下用ssh登陆服务器进行操作还是十分必要的.下载了个Putty,软件很小巧,绿色软件,直接点开就能用.centos中用ifconfig查询ip地址,windows中用Putty就能登陆了.但是发现输入用户名后等待很久才让输入密码,十分不爽.百度了一下,发现是连接设置问题.SSH客户端(如PuTTY)ssh远程登录Linux非常慢的解决方法,主要意思就是: ### PuTTY下设置不使用GSSA

使用Linux的mail命令发送邮件

由于经常工作在linux下,所以很多时候需要将自己工作的报告或其他有用的东东发送给相关的人,所以花时间研究了一下在linux下如何发送mail.我们通常能用到下面3中发送方式: 1. 使用Shell当编辑器发送邮件 这种方式可以直接在shell窗口编辑邮件正文,当编辑完成之后使用Ctrl+D退出,同时邮件也会被发送出去 # -s后面是邮件的主题,主题后面是目标邮件地址[[email protected] ~]# mail -s “Lucky mail” [email protected] Hi

Spring Mail

想必大家在今天这个特殊的日子里,一定热血沸腾了一把.为上午的阅兵点70个赞! 进入Spring Mail的主题: 前后大概花了8个小时的时间来研究Spring封装的javaMail.本来觉得挺简单的应用,但是真正动手实现起来,出现各种各样不知所措的问题. 推荐几篇blog: 1. http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/mail.html 2. http://obull

Java使用javax.mail.jar发送邮件并同意发送附件

因为Java在开发网页上占有绝大优势.所以作为web端的领军人物,譬如发送短信和发送邮件这些就成了必定,网络安全一再安全我们须要把账号的安全级别提到更高.因此这些对于开发者也就成了必须掌握的技能!我一直都认为作为开发者,不怕在开发的过程中遇到多少难题,而是有没有去解决它的勇气和决心,这里多学习就成为了关键,成为了一个程序员发展的重中之重!好啦.闲话就讲到这里.来点实际的. 当一个开发者工作到一定程度后,面向对象的思维就会一直在他的老子里环绕.所以我们先把邮件的常量类.实体类以及工具类等等先该封装

Java使用javax.mail.jar发送邮件

由于Java在开发网页上占有绝大优势,所以作为web端的领军人物,譬如发送短信和发送邮件这些就成了必然,网络安全一再安全我们需要把账号的安全级别提到更高!因此这些对于开发人员也就成了必须掌握的技能!我一直都觉得作为开发人员,不怕在开发的过程中遇到多少难题,而是有没有去解决它的勇气和决心,这里多学习就成为了关键,成为了一个程序猿发展的重中之重!好啦,闲话就说到这里,来点实际的! 当一个开发人员工作到一定程度后,面向对象的思维就会一直在他的老子里围绕!所以我们先把邮件的常量类.实体类以及工具类等等先