应用spring的邮件发送功能
添加时间:2013-7-16 点击量:
应用spring供给的MailSender和JavaMailSender类。
1、邮件对象类
package cn.luxh.app.mail;
import java.util.List;
import org.springframework.core.io.AbstractResource;
public class Email {
//发件人
private String ;
//收件人
private String[] to;
//主题
private String subject;
//邮件内容
private String text;
//附件
private List<AbstractResource> resources;
//geter seter
//...
}
2、邮件发送办事类
package cn.luxh.app.mail;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.springframework.core.io.AbstractResource;
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
public class MailService {
//简单的文本邮件发送类
private MailSender mailSender;
//错杂邮件发送类
private JavaMailSender javaMailSender;
/
发送简单的文本邮件
@param email
/
public void send(Email email){
SimpleMailMessage smm = new SimpleMailMessage();
smm.setFrom(email.getFrom());
smm.setSubject(email.getSubject());
smm.setTo(email.getTo());
smm.setText(email.getText());
mailSender.send(smm);
}
/
发送错杂邮件
@param email
@throws MessagingException
/
public void sendMime(Email email) throws MessagingException{
MimeMessage mm = javaMailSender.createMimeMessage();
//加上编码,解决中文乱码
MimeMessageHelper helper = new MimeMessageHelper(mm,true,GB2312);
helper.setFrom(email.getFrom());
helper.setTo(email.getTo());
helper.setSubject(email.getSubject());
helper.setText(email.getText(),true);
//添加附件
if(email.getResources()!=null && email.getResources().size()>0) {
for(AbstractResource resource:email.getResources()) {
helper.addAttachment(resource.getFilename(), resource);
}
}
javaMailSender.send(mm);
}
public MailSender getMailSender() {
return mailSender;
}
public void setMailSender(MailSender mailSender) {
this.mailSender = mailSender;
}
public JavaMailSender getJavaMailSender() {
return javaMailSender;
}
public void setJavaMailSender(JavaMailSender javaMailSender) {
this.javaMailSender = javaMailSender;
}
}
3、邮件属性设备文件mail.properties
#smtp办事器
mail.host=smtp.163.com
#用户名
mail.username=heymenfolk@163.com
#暗码
mail.password=your password
4、spring设备文件
<?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.org/schema/context
xsi:schemaLocation=
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd>
<!-- 启用注解支撑 -->
<context:annotation-config />
<!-- 加载属性文件 -->
<context:property-placeholder location=classpath:mail.properties />
<bean id=javaMailSender class=org.springframework.mail.javamail.JavaMailSenderImpl>
<property name=host value=¥{mail.host}/>
<property name=username value=¥{mail.username}/>
<property name=password value=¥{mail.password}/>
</bean>
<bean id=mailService class=cn.luxh.app.mail.MailService>
<property name=mailSender ref=javaMailSender/>
<property name=javaMailSender ref=javaMailSender/>
</bean>
</beans>
5、测试
package cn.luxh.app.test;
import java.util.ArrayList;
import java.util.List;
import javax.mail.MessagingException;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.AbstractResource;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import cn.luxh.app.mail.Email;
import cn.luxh.app.mail.MailService;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={classpath:app-mail.xml})
public class MailTester {
@Autowired
private MailService mailService;
@Test
public void testSendMail() {
Email email = new Email();
email.setFrom(heymenfolk@163.com);
email.setTo(new String[]{21760658@qq.com});
email.setSubject(简单文本邮件);
email.setText(how are you.i am china!\r你好,法度猿!!);
mailService.send(email);
}
@Test
public void testSendMimeMail() throws MessagingException {
Email email = new Email();
email.setFrom(heymenfolk@163.com);
email.setTo(new String[]{21760658@qq.com,heymenfolk@outlook.com});
email.setSubject(错杂邮件);
String text = <html><head><meta http-equiv=\Content-Type\ content=\text/html; charset=gb2312\></head><body><h1><a href=http://luxh.cnblogs.com>我的博客</a></h1></body></html>;
email.setText(text);
List<AbstractResource> resources = new ArrayList<AbstractResource>();
//添加附件
ClassPathResource file1 = new ClassPathResource(top1.jpg);
FileSystemResource file2 = new FileSystemResource(d:/中文.txt);
resources.add(file1);
resources.add(file2);
email.setResources(resources);
mailService.sendMime(email);
}
}
文艺不是炫耀,不是花哨空洞的文字堆砌,不是一张又一张的逆光照片,不是将旅行的意义转化为名牌包和明信片的物质展示;很多时候它甚至完全不美——它嘶吼、扭曲,它会痛苦地抽搐,它常常无言地沉默。——艾小柯《文艺是一种信仰》
应用spring供给的MailSender和JavaMailSender类。
1、邮件对象类
package cn.luxh.app.mail;
import java.util.List;
import org.springframework.core.io.AbstractResource;
public class Email {
//发件人
private String ;
//收件人
private String[] to;
//主题
private String subject;
//邮件内容
private String text;
//附件
private List<AbstractResource> resources;
//geter seter
//...
}
2、邮件发送办事类
package cn.luxh.app.mail;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.springframework.core.io.AbstractResource;
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
public class MailService {
//简单的文本邮件发送类
private MailSender mailSender;
//错杂邮件发送类
private JavaMailSender javaMailSender;
/
发送简单的文本邮件
@param email
/
public void send(Email email){
SimpleMailMessage smm = new SimpleMailMessage();
smm.setFrom(email.getFrom());
smm.setSubject(email.getSubject());
smm.setTo(email.getTo());
smm.setText(email.getText());
mailSender.send(smm);
}
/
发送错杂邮件
@param email
@throws MessagingException
/
public void sendMime(Email email) throws MessagingException{
MimeMessage mm = javaMailSender.createMimeMessage();
//加上编码,解决中文乱码
MimeMessageHelper helper = new MimeMessageHelper(mm,true,GB2312);
helper.setFrom(email.getFrom());
helper.setTo(email.getTo());
helper.setSubject(email.getSubject());
helper.setText(email.getText(),true);
//添加附件
if(email.getResources()!=null && email.getResources().size()>0) {
for(AbstractResource resource:email.getResources()) {
helper.addAttachment(resource.getFilename(), resource);
}
}
javaMailSender.send(mm);
}
public MailSender getMailSender() {
return mailSender;
}
public void setMailSender(MailSender mailSender) {
this.mailSender = mailSender;
}
public JavaMailSender getJavaMailSender() {
return javaMailSender;
}
public void setJavaMailSender(JavaMailSender javaMailSender) {
this.javaMailSender = javaMailSender;
}
}
3、邮件属性设备文件mail.properties
#smtp办事器
mail.host=smtp.163.com
#用户名
mail.username=heymenfolk@163.com
#暗码
mail.password=your password
4、spring设备文件
<?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.org/schema/context
xsi:schemaLocation=
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd>
<!-- 启用注解支撑 -->
<context:annotation-config />
<!-- 加载属性文件 -->
<context:property-placeholder location=classpath:mail.properties />
<bean id=javaMailSender class=org.springframework.mail.javamail.JavaMailSenderImpl>
<property name=host value=¥{mail.host}/>
<property name=username value=¥{mail.username}/>
<property name=password value=¥{mail.password}/>
</bean>
<bean id=mailService class=cn.luxh.app.mail.MailService>
<property name=mailSender ref=javaMailSender/>
<property name=javaMailSender ref=javaMailSender/>
</bean>
</beans>
5、测试
package cn.luxh.app.test;
import java.util.ArrayList;
import java.util.List;
import javax.mail.MessagingException;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.AbstractResource;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import cn.luxh.app.mail.Email;
import cn.luxh.app.mail.MailService;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={classpath:app-mail.xml})
public class MailTester {
@Autowired
private MailService mailService;
@Test
public void testSendMail() {
Email email = new Email();
email.setFrom(heymenfolk@163.com);
email.setTo(new String[]{21760658@qq.com});
email.setSubject(简单文本邮件);
email.setText(how are you.i am china!\r你好,法度猿!!);
mailService.send(email);
}
@Test
public void testSendMimeMail() throws MessagingException {
Email email = new Email();
email.setFrom(heymenfolk@163.com);
email.setTo(new String[]{21760658@qq.com,heymenfolk@outlook.com});
email.setSubject(错杂邮件);
String text = <html><head><meta http-equiv=\Content-Type\ content=\text/html; charset=gb2312\></head><body><h1><a href=http://luxh.cnblogs.com>我的博客</a></h1></body></html>;
email.setText(text);
List<AbstractResource> resources = new ArrayList<AbstractResource>();
//添加附件
ClassPathResource file1 = new ClassPathResource(top1.jpg);
FileSystemResource file2 = new FileSystemResource(d:/中文.txt);
resources.add(file1);
resources.add(file2);
email.setResources(resources);
mailService.sendMime(email);
}
}
文艺不是炫耀,不是花哨空洞的文字堆砌,不是一张又一张的逆光照片,不是将旅行的意义转化为名牌包和明信片的物质展示;很多时候它甚至完全不美——它嘶吼、扭曲,它会痛苦地抽搐,它常常无言地沉默。——艾小柯《文艺是一种信仰》