java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html

 
   

1、创建邮件发送器

首先定义JavaMailSenderImpl对象,并对其进行smtp相关信息设置,相当于我们自己的邮箱,如下:

Java代码
  1. JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
  2. mailSender.setHost("smtp.qq.com");
  3. mailSender.setUsername("[email protected]");
  4. mailSender.setPassword("asterisks");

当然更好的方法是使用配置文件进行配置,这里只是进行介绍,忽略硬编码先。

以上主机为邮箱服务商的smtp地址,用户名、密码为用户自己的邮箱。除以上外还可以设置

setPort(int port) 、setProtocol(String protocol) 等,可暂时不考虑。

这样我们便类似创建好了一个邮件发送器

2、 开始写邮件,编写邮件内容

JavaMailSenderImpl支持MimeMessages和SimpleMailMessages。

MimeMessages为复杂邮件模板,支持文本、附件、html、图片等。

SimpleMailMessages实现了MimeMessageHelper,为普通邮件模板,支持文本。

下面先以SimpleMailMessages为例进行介绍

Java代码
  1. SimpleMailMessage smm = new SimpleMailMessage();
  2. // 设定邮件参数
  3. smm.setFrom(mailSender.getUsername());
  4. smm.setTo("[email protected]");
  5. smm.setSubject("Hello world");
  6. smm.setText("Hello world via spring mail sender");
  7. // 发送邮件
  8. mailSender.send(smm);

如此,我们便完成了一个简单邮件的编写,对于复杂邮件,编写及发送如下

Java代码
  1. //使用JavaMail的MimeMessage,支付更加复杂的邮件格式和内容
  2. MimeMessage msg = mailSender.createMimeMessage();
  3. //创建MimeMessageHelper对象,处理MimeMessage的辅助类
  4. MimeMessageHelper helper = new MimeMessageHelper(msg, true);
  5. //使用辅助类MimeMessage设定参数
  6. helper.setFrom(mailSender.getUsername());
  7. helper.setTo("[email protected]");
  8. helper.setSubject("Hello Attachment");
  9. helper.setText("This is a mail with attachment");
  10. //加载文件资源,作为附件
  11. ClassPathResource file = new ClassPathResource("Chrysanthemum.jpg");
  12. //加入附件
  13. helper.addAttachment("attachment.jpg", file);
  14. // 发送邮件
  15. mailSender.send(smm);

其中MimeMessageHelper为的辅助类MimeMessages。以上包含了以资源文件为附件进行发送。对于普通文件发送方式如下:

Java代码   复制代码   收藏代码
  1. FileSystemResource file = new FileSystemResource("C:\\Users\\image1.jpg");
  2. helper.addInline("file", file);

3、发送邮件

2中已经包含了发送的代码,只需使用JavaMailSenderImpl的send接口即可。支持类型为

Java代码
  1. void send(MimeMessage mimeMessage)
  2. Send the given JavaMail MIME message.
  3. void send(MimeMessage[] mimeMessages)
  4. Send the given array of JavaMail MIME messages in batch.
  5. void send(MimeMessagePreparator mimeMessagePreparator)
  6. Send the JavaMail MIME message prepared by the given MimeMessagePreparator.
  7. void send(MimeMessagePreparator[] mimeMessagePreparators)
  8. Send the JavaMail MIME messages prepared by the given MimeMessagePreparators.
  9. void send(SimpleMailMessage simpleMessage)
  10. Send the given simple mail message.
  11. void send(SimpleMailMessage[] simpleMessages)
  12. Send the given array of simple mail messages in batch.

下面介绍下怎么发送富文本文件以及以velocity为模板发送邮件。

4、发送html文件

只需要在MimeMessageHelper setText时将是否是html设为true即可。setText介绍如下:

Xml代码
  1. setText(String text, boolean html)
  2. Set the given text directly as content in non-multipart mode or as default body part in multipart mode.

示例代码(包括附件)如下:

Java代码
  1. //第二个参数true,表示text的内容为html
  2. //注意<img/>标签,src='cid:file','cid'是contentId的缩写,'file'是一个标记,需要在后面的代码中调用MimeMessageHelper的addInline方法替代成文件
  3. helper.setText("<body><p>Hello Html Email</p><img src='cid:file'/></body>", true);
  4. FileSystemResource file = new FileSystemResource("C:\\Users\\image1.jpg");
  5. helper.addInline("file", file);

你可能感兴趣的:(java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html)