在实际的开发中,发送电子邮件是件很经常的事情,例如你做一个网站,当用户注册的时候需要把发封邮件给用户,通知他注册成功或者其他的,再比如,在点上商务网站中,用户下订单需要发送邮件告知用订单状态什么的,发货了也要发邮件通知用户已发货,等等,很多时候我们都是需要将相同的内容发送给许多用户,无外乎改变下邮件中的用户名,帐号,订单号什么的,其他的都可以做成模版,这样也方便美工美化邮件内容,方便文档人员设计邮件用语,以前我们发邮件的时候都是使用freemarker做成模版,现在我来简单的介绍下,其实很简单,发送邮件呢,我用Apache common-email,这个jar包,你也可以用其他你熟悉的
1、首先我们来建一个简单的java项目,取什么名字由你心情来决定,建好好把下面几个包加到classpath中,activation.jar、commons-email-1.2.jar、mail.jar和freemarker-2.3.19.jar,这几个jar包网上都能找的到,如果找不到或者不想找,可以联系我,我会发给你
2、在跟目录下新建一个template(你也可以叫其他名字)文件夹,用来放我们的模版,再在这个文件夹下建一个template.ftl文件,这就是我们的模版,我们模仿下注册成功后发邮件给用户,告诉他用户名和密码,很简单,内容就一句话:
您好 ${user} 欢饮您注册我们网站 ,你的帐号是${account},请妥善保管好您的帐号,谢谢!
3、建一个邮件发送类,我叫它mail
package com.test.mail;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;
public class Mail {
private SimpleEmail email = new SimpleEmail();
public Mail(){
//设置邮件发送的服务器
email.setHostName("你的邮件服务器");
//设置邮件服务器认证账户名和密码
email.setAuthentication("你的账户名", "你的密码");
email.setCharset("UTF-8");
}
/**
* 设置邮件接受者
* @param to
* @throws EmailException
*/
public void addTo(String to) throws EmailException{
email.addTo(to);
}
/**
* 设置邮件发送者
* @param from
* @throws EmailException
*/
public void setFrom(String from) throws EmailException{
email.setFrom(from);
}
/**
* 设置邮件标题
* @param subject
*/
public void setSubject(String subject){
email.setSubject(subject);
}
/**
* 设置邮件内容
* @param content
* @throws EmailException
*/
public void setContent(String content) throws EmailException{
email.setMsg(content);
}
/**
* 发送你的邮件
* @throws EmailException
*/
public void send() throws EmailException{
email.send();
}
}
4、再写个测试类来测试下我们的邮件发送类
package junit.test;
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.mail.EmailException;
import org.junit.Test;
import com.test.mail.Mail;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
public class MailTest {
@Test
public void sendTest(){
Mail mail = new Mail();
//取得freemarker配置实例
Configuration configuration = new Configuration();
try {
//设置模版所在文件夹
configuration.setDirectoryForTemplateLoading(new File("template"));
//取得我们模版文件
Template t = configuration.getTemplate("template.ftl");
Map<String, Object> rootMap = new HashMap<String, Object>();
rootMap.put("user", "张三");
rootMap.put("account", "1234546");
StringWriter writer = new StringWriter();
t.process(rootMap, writer);
mail.addTo("xxx@xx.com");
mail.setFrom("xxx@xx.com");
mail.setSubject("注册成功");
mail.setContent(writer.toString());
mail.send();
} catch (EmailException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
5、跑一个,哈哈,邮件发送出去了,也收到了!很简单吧!