此篇主要讲的是使用spring配置实现邮件发送,与之前的底层实现简便了不少,只需要几个配置就可以了,那么请往下看:
先写个接口
package org.service;
public interface IMailsendService {
void sendMessage();
}
然后在写个实现该接口的类:
package org.service.impl;
import java.io.IOException;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.service.IMailsendService;
import org.springframework.core.io.ClassPathResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
public class AttMailsendServiceImpl implements IMailsendService {
private JavaMailSender javaMailSender;
@Override
public void sendMessage() {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper;
try {
helper = new MimeMessageHelper(message,true,"utf-8");
helper.setFrom("jerry@mail.com");
helper.setTo("tina@mail.com");
helper.setSubject("带附件的邮件");
//普通格式的
//helper.setText("发送一个附件内容!百度搜索");
//html格式的
helper.setText("发送一个附件内容!百度搜索",true);
//添加附件1
ClassPathResource file1 = new ClassPathResource("/org/doc/doc.txt");
helper.addAttachment(file1.getFilename(),file1.getFile());
//添加附件2
ClassPathResource file2 = new ClassPathResource("/org/doc/text.txt");
helper.addAttachment(file2.getFilename(), file2.getFile());
javaMailSender.send(message);
} catch (MessagingException e) {
// TODO 异常执行块!
e.printStackTrace();
} catch (IOException e) {
// TODO 异常执行块!
e.printStackTrace();
}
}
public JavaMailSender getJavaMailSender() {
return javaMailSender;
}
public void setJavaMailSender(JavaMailSender javaMailSender) {
this.javaMailSender = javaMailSender;
}
}
上面的这个类还可以发送带附件的邮件,里面含两个附件(文件),我弄上来吧:
还有一种是使用模板发送带html格式的邮件:
我直接上实现类:
package org.service.impl;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.service.IMailsendService;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
public class CreateMatterServiceImpl implements IMailsendService {
private JavaMailSender javaMailSender;
private Configuration configuration;
@Override
public void sendMessage() {
MimeMessage message = javaMailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message,true,"UTF-8");
helper.setFrom("jerry@mail.com");
helper.setTo("tina@mail.com");
helper.setSubject("使用模板进行发送邮件");
helper.setText(getText(),true);
//从模板里面读取
javaMailSender.send(message);
} catch (MessagingException e) {
// TODO 异常执行块!
e.printStackTrace();
}
}
//读取模板
private String getText(){
String txt = "";
try {
Template template = configuration.getTemplate("mail.ftl");
//通过map传递动态数据
Map map = new HashMap();
map.put("username","雄雄");
//解析模板文件
txt = FreeMarkerTemplateUtils.processTemplateIntoString(template,map);
} catch (IOException e) {
// TODO 异常执行块!
e.printStackTrace();
} catch (TemplateException e) {
// TODO 异常执行块!
e.printStackTrace();
}
return txt;
}
public JavaMailSender getJavaMailSender() {
return javaMailSender;
}
public void setJavaMailSender(JavaMailSender javaMailSender) {
this.javaMailSender = javaMailSender;
}
public Configuration getConfiguration() {
return configuration;
}
public void setConfiguration(Configuration configuration) {
this.configuration = configuration;
}
}
模板文件如下:
然后在看看spring里面是怎么配置的呢?
true UTF-8
当前时间已经是00点多了,又累又困,我就不详细解释这个applicationContexct.xml里面的内容了,里面有注释,看不懂的可以评论,我第一时间改进!
接着我们测试一下:
TestMail:
package org.test;
import org.junit.Test;
import org.service.IMailsendService;
import org.service.impl.Mail;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestMail {
@Test
public void testMail() {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
//简单邮件
//IMailsendService mailsendService=(IMailsendService) ctx.getBean("simpleMailsendService");
//复杂邮件
//IMailsendService mailsendService=(IMailsendService) ctx.getBean("AttMailsendService");
//使用模板的文件
IMailsendService mailsendService=(IMailsendService) ctx.getBean("createMatterService");
mailsendService.sendMessage();
System.out.println("发送成功!");
}
}
注明一下:简单邮件是直接发的文本内容,复杂邮件是包含html格式和附件的,模板发送是html格式的另一种方式,我们来看看运行的结果:
先看看带附件,还有html格式的邮件:
接下来是简单邮件:
接下来的一种是使用模板发送邮件,用户名是动态上去的:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。



