最精做到一个项目需要用到邮箱验证,所研究了一下
首先需要jar包:
-3.1. (封装了javamail的相关api)
; velocity-1. velocity-tools-view-1. commons-collections-3. (为了防止出现位置错误,所以就全导入了)
首先建议一个 配置相关的信息
#必要的信息,服务器,用户名,密码,端口
host=smtp.
username=yourEmail
password=yourPassword
port=25
=true
=25000
=true
=
=25
=false
#默认发送者
=CoderZone<coderzone@>
#默认标题
=默认标题
=text/html; charset=GBK
#不同类型邮件模板
=默认的模板标题
=模板VM文件路径
然后配置Spring配置文件,同Spring的注入,大大的方便了我们编程
新建一个
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="/schema/beans"
xmlns:xsi="http:///2001/XMLSchema-instance"
xsi:schemaLocation="/schema/beans
/schema/beans/spring-beans-2.
">
<!-- 邮箱配置文件读取 -->
<bean name="propertyConfigurer"
class="">
<property name="locations">
<list>
<value>classpath:</value>
</list>
</property>
</bean>
<!-- 邮件的发送器,非常的重要 ,传入配置文件的信息-->
<bean name="mailSender" class="">
<property name="host">
<value>${host}</value>
</property>
<property name="username">
<value>${username}</value>
</property>
<property name="password">
<value>${password}</value>
</property>
<property name="port">
<value>${port}</value>
</property>
<property name="javaMailProperties">
<props>
<prop key="">${}</prop>
<prop key="">${}</prop>
<prop key="">${}</prop>
<prop key="">${}</prop>
<prop key="">${}</prop>
</props>
</property>
</bean>
<!-- 邮件发送工具,也是一个基础的模板类,其他类型的模板都是"继承"这个的 -->
<bean name="baseMailTemplate" class="com."
abstract="true">
<property name="velocityEngine" ref="velocityEngine" />
<property name="mailHeaders">
<props>
<prop key="Content-Type">
${}
</prop>
</props>
</property>
<property name="from">
<value>${}</value>
</property>
</bean>
<!-- 读取velocity模板的工厂类,也就是的不同的模板的 -->
<bean
class="">
<property name="velocityProperties">
<props>
<!-- 设置从classPath下读取模板文件 vm文件 -->
<prop key="">class</prop>
<prop key="">
</prop>
<prop key=""></prop>
</props>
</property>
</bean>
</beans>
基本配置完成了,下面就是配置相应的模板了,新建一个 ,这里我有两个模板,一个是激活帐号的,一个是找回密码的
别忘了把这两个xml文件包含到主配置文件里去哦
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="/schema/beans"
xmlns:xsi="http:///2001/XMLSchema-instance"
xsi:schemaLocation="/schema/beans /schema/beans/
">
<bean parent="baseMailTemplate">
<property name="subject">
<value>${}</value>
</property>
<property name="templateName">
<value>${}</value>
</property>
</bean>
<bean parent="baseMailTemplate">
<property name="subject">
<value>${}</value>
</property>
<property name="templateName">
<value>${}</value>
</property>
</bean>
</beans>
接下来就是主要的操作类了
package com.;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
/**
* 类描述:邮件发送模板
* @author zzy
* @date: 日期:2012-9-29 时间:上午10:58:21
* @version 1.0
*/
public class VelocityMailUtil{
private Properties mailHeaders = new Properties();
/**
* 邮件发送者,包括发送者姓名和地址,用于设置在邮件的from栏目中
*/
private String from;
/**
* 邮件主题
*/
private String subject;
/**
* 邮件内容模板地址/名称
*/
private String templateName;
/**
* velocity引擎
*/
private VelocityEngine velocityEngine;
/**
* JavMail发送器,通过Spring诸注入
*/
@Autowired
private JavaMailSender mailSender;
/**
* 使用提供的数据,套入velocity模板,生成最后文本信息。
*
* 大部分情况下,这个信息应该就是邮件的内容。
*/
public String renderText(Map model) throws VelocityException {
//防止乱码,需设置为GBK
return (getVelocityEngine(),
getTemplateName(),"GBK", model);
}
public Properties getMailHeaders() {
return mailHeaders;
}
/**
* 设置非空mime hader,一般可以利用此设置contentType等
* @param mailHeaders
*/
public void setMailHeaders(Properties mailHeaders) {
= mailHeaders;
}
public String getFrom() {
return ;
}
public Address getFromAddress() throws AddressException {
return new InternetAddress();
}
/**
* 设置邮件发送者,包括发送者姓名和地址,用于设置在邮件的from栏目中
*
* @param from
*/
public void setFrom(String from) {
= from;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
= subject;
}
public String getTemplateName() {
return templateName;
}
/**
* 设置邮件内容模板地址/名称
*
* @param templateName
*/
public void setTemplateName(String templateName) {
= templateName;
}
public VelocityEngine getVelocityEngine() {
return velocityEngine;
}
public void setVelocityEngine(VelocityEngine velocityEngine) {
= velocityEngine;
}
/**
* 获取下层配置的mail发送器,发送邮件, 该mail发送器必须是JavaMailSender,否则抛出CaseException。
*
* @return
*/
public JavaMailSender getJavaMailSender() {
return (JavaMailSender)mailSender;
}
/**
* 设置mail发送器
*
* @param mailEngine
*/
public void setMailSender(JavaMailSender mailSender) {
= mailSender;
}
/**
*
* 发送Mime邮件简易方法。
*
* 以Mime的方式发送邮件,这主要是为能够支持发送html或类似功能(非简单文本)的邮件
*
* @param nameOfTo 邮件接收收人姓名 或 昵称
* @param emailOfTo 邮件接收人邮件地址
* @param model 邮件velocity模板中变量的值
* @throws MailException
*/
public void sendMime(String nameOfTo, String emailOfTo, Map<String, Object> model) throws MailException {
sendMime(nameOfTo + "<" + emailOfTo + ">", model);
}
/**
* 发送Mime邮件简易方法。
*
* 以Mime的方式发送邮件,这主要是为能够支持发送html或类似功能(非简单文本)的邮件
*
* @param to 邮件接收人邮件地址以及可能的收件人姓名或昵称
* @param model 邮件velocity模板中变量的值
*/
public void sendMime(String to, Map<String, Object> model) throws MailException {
sendMime(mergeSimpleMessage(to, model));
}
/**
* 发送Mime邮件简易方法。
*
* 以Mime的方式发送SimpleMailMessage,这主要是为能够支持发送html或类似功能(非简单文本)的邮件
*
* @param simpleMessage
* @throws MailException
*/
public void sendMime(SimpleMailMessage simpleMessage) throws MailException {
(toMimeMessage(simpleMessage));
}
/**
* 产生简单信息
* @param to
* @param model
* @return
*/
public SimpleMailMessage mergeSimpleMessage(String to, Map<String, Object> model) {
//render text of mail from velocity template with the data
String text = null;
try {
text = renderText(model);
} catch (VelocityException e) {
();
}
(text);
//mail message setting
SimpleMailMessage message = new SimpleMailMessage();
(getSubject());
(getFrom());
(to);
(text);
return message;
}
/**
* 产生html文本信息
* @param simpleMailMessage
* @return
*/
public MimeMessagePreparator toMimeMessage(final SimpleMailMessage simpleMailMessage) {
MimeMessagePreparator preparator = new MimeMessagePreparator(){
public void prepare(MimeMessage mimeMessage) throws Exception {
// TODO Auto-generated method stub
MimeMessageHelper message = new MimeMessageHelper(mimeMessage,true,"GBK");
(());
(());
((),true);
(());
}
};
return preparator;
}
}
下面就是模板文件了 举一个例子 account_activity.vm
此处的 $!{user} 为占位符,具体替换为你在 VelocityMailUtil中传入的map文件,根据键值对进行替换。
要注意的这个vm文件放置的位置,前面我们设置了是从classPath下读取(因为不同的运行环境路径不同,所以还是不要设置绝对路径了),把这里路径写在就可以了
<html>
<body>
<h3>您好 $!{username}, 欢迎您加入CoderZone!</h3>
<div>
您的email地址是<a href="$!{url}">$!{url}</a>.
本条信息是系统自动发送,请勿回复!
</div>
</body>
</html>
到这里就一切OK了,怎么调用就不说了把,直接调用VelocityMailUtil的sendMime方法就可以了,自己去试试把