应用Spring发送邮件(一)
使用Spring发送邮件(一)
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("<A href="mailto:dongkk@sina.com">dongkk@sina.com</A>");
- msg.setTo("<A href="mailto:dongkk@sina.com">dongkk@sina.com</A>");
- msg.setReplyTo("<A href="mailto:dongkk@sina.com">dongkk@sina.com</A>");
- 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);
- }
- }
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>
<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邮件!");
- }
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);