Spring提供了一个接口来实现邮件发送,并对JavaMail底层API进行了封装,使用起来更方便。
1)在spring-bean.xml中声明邮件服务bean
<!-- 分解数据库配置 -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:mailConfig.properties</value>
<value>classpath:dbConfig.properties</value>
</list>
</property>
</bean>
<!-- spring mail -->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${host}"/>
<property name="port" value="${sendPort}"/>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
<prop key="mail.smtp.timeout">${mail.smtp.timeout}</prop>
</props>
</property>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</bean>
注:邮件配置如下
host=smtp.126.com
sendPort=25
mail.smtp.auth=true
mail.smtp.timeout=25000
username=neuropathies@126.com
password=zd1991..
2)发送简单邮件
private ApplicationContext applicationContext;
@Before
public void init(){
applicationContext = new ClassPathXmlApplicationContext("spring-beans.xml");
}
/**
* 简单邮件.
* */
//@Test
public void springSimpleMail1(){
try{
JavaMailSender javaMailSender = (JavaMailSender)this.applicationContext.getBean("mailSender");
System.out.println(javaMailSender);
//创建简单邮件对象
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setTo("zhangdong@mochasoft.com.cn"); //接收人
simpleMailMessage.setFrom("neuropathies@126.com"); // 发送人的别名
simpleMailMessage.setSubject("测试邮件"); // 邮件主题
simpleMailMessage.setText("这是一封测试邮件"); // 设置邮件内容
javaMailSender.send(simpleMailMessage); //发送
}catch(Exception e){
e.printStackTrace();
}
}
2)发送html格式的邮件
private ApplicationContext applicationContext;
@Before
public void init(){
applicationContext = new ClassPathXmlApplicationContext("spring-beans.xml");
}
/**
* html格式的邮件
* */
//@Test
public void springMailTest2(){
JavaMailSender javaMailSender = (JavaMailSender)this.applicationContext.getBean("mailSender");
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper;
try {
//设置utf-8编码
mimeMessageHelper = new MimeMessageHelper(mimeMessage,true,"UTF-8");
mimeMessageHelper.setTo("758751094@qq.com");
mimeMessageHelper.setFrom("neuropathies@126.com");
mimeMessageHelper.setSubject("测试邮件");
mimeMessageHelper.setText("<html><head></head><body><h1>hello!!chao.wang</h1></body></html>",true);
javaMailSender.send(mimeMessage);
} catch (Exception e) {
e.printStackTrace();
}
}
3)发送带附件的邮件
private ApplicationContext applicationContext;
@Before
public void init(){
applicationContext = new ClassPathXmlApplicationContext("spring-beans.xml");
}
/**
* 带附件的email
* */
@Test
public void springMailTest3(){
JavaMailSender javaMailSender = (JavaMailSender)this.applicationContext.getBean("mailSender");
try {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
//添加附件支持和 编码设置
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,true,"UTF-8");
messageHelper.setTo("758751094@qq.com");
messageHelper.setFrom("neuropathies@126.com");
messageHelper.setSubject("带附件的测试邮件");
messageHelper.setText("<html><head></head><body><h1>hello!!chao.wang</h1></body></html>",true);
//附件内容:图片
messageHelper.addInline("a", new File("F:" + File.separator + "1.jpg"));
messageHelper.addInline("b", new File("F:" + File.separator + "2.jpg"));
//文件附件
File attachmentFile = new File("F:" + File.separator + "Toduban.jsp");
//用MineUtility.encodeWord()解决 附件名称乱码问题
messageHelper.addAttachment(MimeUtility.encodeWord(attachmentFile.getName()), attachmentFile);
javaMailSender.send(mimeMessage);
} catch (Exception e) {
}