B2C电子商务网站使用Spring发送激活账号的电子邮件

2014-11-24 01:00:55 · 作者: · 浏览: 0
一、 前面的准备工作

1:邮箱服务器的设置:
我使用的是QQ邮箱服务器来实现的,下面的操作就以QQ邮箱服务器为例。如果你的QQ邮箱还未开通pop3和smtp服务的话,你需要按照下面的操作来开通服务:

第一步:



第二步:



2: 引入相应的jar文件
在我们的B2C电子商务网站中,在lib下出除了之前我们引入的spring jar文件之外,我们还需要两个jar文件,分别是:
activation.jar
mail.jar

二:具体的实现

1、在dao层新建一个SenderMailDao接口

Java代码
//括号里面的参数是会员的一个实体
public void sendMail(Customers entity);
public interface SenderMailDao {
//给会员发送email的方法
public void sendMail(Customers entity);
}

2、接下来就是这个接口的实现类:SenderMailDaoImpl

Java代码
public class SenderMailDaoImpl implements SenderMailDao {
private JavaMailSenderImpl mailSender;//这个类中封装了邮箱服务器的一些配置,包括host,用户名,密码等 下面在配置文件中会有详细的说明
public void setMailSender(JavaMailSenderImpl mailSender) {
this.mailSender = mailSender;
}//通过set方法注入

public void sendMail(Customers entity) {
//通过MailSender创建一个邮件
MimeMessage message=mailSender.createMimeMessage();
try {
//这里的MimeMessageHelper是用来封装邮件的一些基本信息
MimeMessageHelper helper=new MimeMessageHelper(message,true,"UTF-8");
helper.setFrom(" xxx@qq.com");//发件人的地址
helper.setTo(entity.getEmail());//收件人的地址
helper.setSubject("账户激活邮件");//邮件的主题
MimeBodyPart body=new MimeBodyPart();//邮件体
body.setContent("尊敬的 "+entity.getName()+" 用户,您好!!欢迎您使用我们的电子商务网站!!" +
" 请点击激活您的账户
","text/html;charset=UTF-8");//这个邮件体是一个超链接,是用来设置会员的状态的;(补充:在我们的 数据库中的会员表中应该添加一个会员账号激活状态的字段,我的表中叫“Status“)
MimeMultipart mp=new MimeMultipart();
mp.addBodyPart(body);
message.setContent(mp);
mailSender.send(message);//发送邮件

} catch (MessagingException e) {
System.out.println("发送失败。。。。。");
e.printStackTrace();
}
}
}





3、 在我们的Service层新建一个SenderMailService接口,同时这个接口继承dao层的接口


Java代码
public interface SenderMailService extends SenderMailDao {

}

4、然后就是新建一个实现service层的接口的实现类SenderMailServiceImpl


Java代码
public class SenderMailServiceImpl implements SenderMailService {
private SenderMailDaoImpl senderMailDaoImpl;//真正的业务实现类
private TaskExecutor taskExecutor;//异步线程执行器 在文档的最后有说明

public void setSenderMailDaoImpl(SenderMailDaoImpl senderMailDaoImpl) {
this.senderMailDaoImpl = senderMailDaoImpl;
}
public void setTaskExecutor(TaskExecutor taskExecutor) {
this.taskExecutor = taskExecutor;
}
//分别用set方法注入

//下面是关键部分,为了将会员的注册和发送邮件不在一个线程下执行我们需要将发送邮件的操作另开启一个线程去完成,这样一来会员的注册就不会因为发送邮件而发生等待的过程。
public void sendMail(final Customers entity) {
taskExecutor.execute(new Runnable() {

public void run() {
senderMailDaoImpl.sendMail(entity);
}
});

}
}


5、 配置文件的相关配置

首先是dao层的配置,这里我们需要配置我们真正的和业务实现bean以及JavaMailSenderImpl这个邮箱服务器的配置


Xml代码