Spring对发送邮件提供了一个抽象层,对接收邮件没有提供额外的支持。Spring在org.springframework.mail包的MailMessage和MailSender这两个高层抽象层接口描述了邮件消息和发送者。
Spring通过MailSender的子接口JavaMailSender提供了发送负责邮件的功能。JavaMailSender类实现了该子接口,支持JavaMail的MimeMessage和Spring的MailMessage。
MimeMessageHelper是MimeMessage的封装类,提供了编辑MimeMessage的方法,提供了设置html邮件内容、内嵌文件(如图片文件、音频文件等)及邮件附件的支持。
一、发送纯文本邮件
在Spring中,使用JavaMailSenderImpl发送纯文本邮件。
package com.bb.spring.email;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
public class MailService {
public void sendSimpleMail(JavaMailSender sender){
SimpleMailMessage msg=new SimpleMailMessage();
msg.setFrom("dongkk@sina.com");
msg.setTo("dongkk@sina.com");
msg.setReplyTo("dongkk@sina.com");
msg.setSubject("使用Spring发送邮件");
msg.setText("test Spring发送邮件");
sender.send(msg);
System.out.println("成功发送!");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext ctx = new FileSystemXmlApplicationContext(
"src/applicationContext.xml");
JavaMailSender sender=(JavaMailSender) ctx.getBean("mailsender");
MailService ms=new MailService();
ms.sendSimpleMail(sender);
}
}
在src下的applicationContext.xml中对JavaMailSenderImpl的配置如下:
<bean id="mailsender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.sina.com.cn"/>
<property name="username" value="dongkk"/>
<property name="password" value="123456"/>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.timeout">25000</prop>
</props>
</property>
</bean>
此时可以发送成功。
二、发送html邮件
发送html邮件和发送纯文本邮件差不多,但必须用MimeMessage创建邮件消息,可以通过MimeMessageHelper类创建并填充MimeMessage。
public void sendHtmlMail(JavaMailSender sender) throws MessagingException{
MimeMessage msg=sender.createMimeMessage();
//创建MimeMessageHelper实例,第2个参数表示是否为multipart邮件,第3个参数表示MimeMessage的编码
MimeMessageHelper helper=new MimeMessageHelper(msg,false,"utf8");
helper.setFrom("dongkk@sina.com");
helper.setTo("dongkk@sina.com");
helper.setSubject("注册成功");
String htmlText="<html><head>"+
"<meta http-equiv=\"content-type\" content=\"text/html;charset=utf8\">"+
"</head><body>" +
"恭喜你在淘宝网:<font color='red' size='30'>注册成功</font>"+
"</body></html>";
//设置邮件内容,第2个参数为true表示该邮件为html邮件
helper.setText(htmlText,true);
sender.send(msg);
System.out.println("成功发送html邮件!");
}
运行方法与纯文本一样:
MailService ms=new MailService();
ms.sendHtmlMail(sender);
四、发送内嵌邮件
可以使用JavaMailSender发送MIME类型文件(如音频文件、图片文件)嵌入到邮件体中,需要使用addInline()方法。以嵌入图片为例,首先将一副名称为2.jpg的图片放到src下。
public void sendInlineMail(JavaMailSender sender) throws MessagingException{
MimeMessage msg=sender.createMimeMessage();
//创建MimeMessageHelper实例,第2个参数表示是否为multipart邮件,第3个参数表示MimeMessage的编码
MimeMessageHelper helper=new MimeMessageHelper(msg,true,"utf8");//true表示为multipart邮件
helper.setFrom("dongsanbo@sina.com");
helper.setTo("dongsanbo@sina.com");
helper.setSubject("注册成功");
String htmlText="<html><head>"+
"<meta http-equiv=\"content-type\" content=\"text/html;charset=utf8\">"+
"</head><body>" +
"恭喜你在淘宝网:<font color='red' size='30'>注册成功</font><br>"+
"<div><img src=\"cid:img01\"></img></div>"+
"</body></html>";
//设置邮件内容,第2个参数为true表示该邮件为html邮件
helper.setText(htmlText,true);
ClassPathResource img=new ClassPathResource("2.jpg");
helper.addInline("img01",img);//添加内嵌文件,第1个参数为cid标识这个文件,第2个参数为资源
//helper.addInline(String contentId,Resource resource);
sender.send(msg);
System.out.println("成功发送内嵌邮件!");
}
运行方法与纯文本一样:
MailService ms=new MailService();
ms.sendInlineMail(sender);
可以在邮件中看到嵌入的图片。
分享到:
相关推荐
java 发送邮件 spring发送邮件Mail
利用spring下的一个类进行邮件发送,内附具体用法
Spring实现各种邮件的发送 简单配置就可发送邮件
项目主要是使用 Spring Boot 发送邮件,主要的技术点有: 1、Spring Boot +mybatis的整合 2、Spring Boot项目中jsp的使用 3、Spring Boot 发送邮件(文本格式的邮件、发送HTML格式的邮件、发送带附件 的邮件、...
为了使用JavaMail中的一些特色, 比如MIME类型的信件, Spring提供了MailSender的一个子接口, 即org.springframework.mail.javamail.JavaMailSender。Spring还提供了一个回调接口org.springframework.mail.javamail....
使用Spring Boot 开发支持多附件邮件发送微服务平台代码
Spring 封装的JavaMail,使邮件发送变的相当简单,我通过Spring的邮件发送实现了发纯文本形的内容,HTMl,带附件,带图片等示例代码,并自行测试过.希望对初学者有帮助
用spring发送邮件,该功能在一般系统监控中经常用到。
Spring整合Quartz定时发送邮件
基于spring mvc 框架,用freemarker创建邮件模板,包括详细邮件发送功能的spring配置和实现代码
spring发送邮件所需jar包
spring框架使用
spring+velocity发送邮件,spring+velocity发送邮件
NULL 博文链接:https://delinghayiye-163-com.iteye.com/blog/1683812
使用Spring mail发送邮件的完整实例,包含代码与Spring mail的jar,可直接运行与使用。相关学习文档参考博客《Spring Mail邮件发送 http://blog.csdn.net/chenxiang0207/article/details/8256528》。
NULL 博文链接:https://chaoyi.iteye.com/blog/2171158
Spring邮件发送服务(java邮件发送),支持多附件、多人发送/抄送/暗送
pdf介绍spring-boot-邮件发送。 Spring Boot通过集成spring-boot-starter-mail依赖和相关配置,可以方便地实现邮件发送功能。具体的步骤: 添加依赖:在Spring Boot项目的pom.xml文件中加入spring-boot-starter-mail...
Spring mail发送邮件实例 Spring mail发送邮件实例