电子商务网站使用

Spring 发送激活账号的电子邮件

一、    前面的准备工作

1:邮箱服务器的设置:

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

第一步:

第二步:

2: 引入相应的jar文件

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

activation.jar

   mail.jar

二:具体的实现   

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

 

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

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

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("<a href='http://localhost:8888/Ebusiness/zb/cus_activation.action?cus.lname="+entity.getLname()+"&cus.status=1'>尊敬的  "+entity.getName()+"  用户,您好!!欢迎您使用我们的电子商务网站!!" +"  请点击激活您的账户</a>","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层的接口

 

public interface SenderMailService extends SenderMailDao {}

 

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

 

 

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这个邮箱服务器的配置

 

 

<!—真正的业务实现类-->
<bean id="senderMailDaoImpl" class="cn.hbsi.zhangbao.dao.SenderMailDaoImpl" scope="singleton">
<property name="mailSender" ref="mailSender"/>
</bean><!-- 邮箱服务器配置 -->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<!--邮箱服务器的主机地址 --><property name="host" value="smtp.qq.com"/>
<!--默认的编码方式 --><property name="defaultEncoding" value="UTF-8"/>
<!--服务器的端口号 --><property name="port" value="25"/>
<!—连接服务器的用户名 也就是你的QQ邮箱的地址名例如xxx@qq.com--><property name="username" value="XXX"/>
<!—密码 就是你登陆邮箱的密码 --><property name="password" value="XXX"/>
<!—下面就是smtp的一些设置--><property name="javaMailProperties"><props>
<!—设置自动登录--><prop key="mail.smtp.auth">true</prop>
<!—设置端口的进入优先命令状态--><prop key="mail.smtp.starttls.enable">true</prop></props></property>
</bean>

 

 

 6、接下来是service层的配置

 

     在这里我们需要对我们service层的业务实现类进行配置,以及异步执行器的配置

 

 

 

 

<!—service层的业务实现类 --><bean id="senderMailServiceImpl" class="cn.hbsi.zhangbao.service.SenderMailServiceImpl" scope="singleton">
<!—为真正的业务实现类 进行注入-->
<property name="senderMailDaoImpl" ref="senderMailDaoImpl"/>
<!—为异步线程执行器 进注入 -->
<property name="taskExecutor" ref="taskExecutor"/>
</bean><!—配置异步线程执行器 -->
<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<!—设置核心池子的大小 --><property name="corePoolSize" value="10"/>
<!—设置最大池子的大小 --><property name="maxPoolSize" value="30"/>
</bean>

 

 

 7、最后就是action的配置

  在会员的action中我们要引入service层的业务接口(由于代理都是面向接口的编程)

 

public class CustomerAction extends ActionSupport {private SenderMailService senderMailServiceImpl;
public void setSenderMailServiceImpl(SenderMailService senderMailServiceImpl) {this.senderMailServiceImpl = senderMailServiceImpl;}//set方法注入//接下来就是会员注册的方法://会员注册public String reg(){boolean flag=false;flag=customerServiceImpl.insert(cus);if(flag){//注册完成后自动发送激活邮件senderMailServiceImpl.sendMail(cus);}return "toLogin";}
}下面我们要对这个action进行必要的配置:代码如下<bean id="springCustomerAction" class="cn.hbsi.zhangbao.action.CustomerAction" scope="prototype">
<property name="customerServiceImpl" ref="customerServiceImpl"/><!—注入发送邮件的service层的实现类 -->
<property name="senderMailServiceImpl" ref="senderMailServiceImpl"/><property name="pagination" ref="pagination"/>
</bean>

 

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

  1. Bag标签之轻开B2C电子商务网站登录校验实例

    选择邮件类型用户名登录轻开B2C电子商务网站,校验用户名是不是合法的邮件地址,以及密码不为空实例. 选择用户名类型及输入用户名密码 <TR><TD width=62 align=ce ...

  2. php电子商务网站案例,基于PHP的B2C电子商务网站开发

    [实例简介] 本文件通过简单的B2C网上商城系统--<闽台商城>开发,介绍使用PHP进行WEB应用程序开发的一般过程和方法.B2C网上商城系统--<闽台商城>即企业负责电子商务 ...

  3. B2C电子商务网站的组织架构

    参考:http://blog.csdn.net/cxzhq2002/article/details/6117554    http://blog.csdn.net/cxzhq2002/article/ ...

  4. 型B2C电子商务网站组织架构分析

    大型B2C电子商务网站组织架构分析 电子商务这几年可以说风行世界,表现出强大的生命力.在中 国,淘宝.拍拍的年交易额高达数千亿:京东的销售足以同苏宁.国美分庭抗礼:当当网市值百亿美金:还有凡客.乐淘. ...

  5. 使用Spring发送带附件的电子邮件(站内和站外传送)

    1.使用Spring发送带附件的电子邮件 <?xml version="1.0" encoding="UTF-8"?> <beansxmlns ...

  6. 轻开B2C电子商务网站(20141231版)发布手册

    轻开电子商务系统发布手册 系统下载 CSDN下载频道:http://download.csdn.net/detail/tx18/8318585 建议安装环境 操作系统: CentOS5.x及以上版本 ...

  7. B2C电子商务网站的突围——再议什么是B2C网站

    在某个电子商务平台工作一年矣,有点小感受,总结一下. 如果你是一个纯程序员,就不要看了,因为今天我们平台有个程序员愕然问我:"请问什么是B2C网站",我有点雷,毕竟那哥们已经有3年 ...

  8. B2C电子商务网站运营推广的优化技巧

    随着网络世界的演进,消费者变得更方便.更多元.更主动地接触世界和信息,还有更多选择.更多娱乐.总之消费者手上握有更大的主导权,主导信息和经验的选择,在想看的时间,看自己想看的内容.这一切,带给二十一世 ...

  9. 解析B2C电子商务网站系统架构

    系统的开发与演化,前台严格follow消费者的购买流程,后台则盯牢订单流转,牢牢抓住这两条主线,才能高屋建瓴的看清B2C的逻辑链和数据流,更深刻的规划功能模块,从而更有效支撑实际业务的流转. 前台系统 ...

最新文章

  1. Linux中shell命令的用法和技巧
  2. struts2 jquery ajax 局部刷新遇到的各种问题
  3. 小谈React、React Native、React Web
  4. Linux下Nginx的安装和简单管理
  5. 我的世界服务器修改末地难度,涨姿势啦!我的世界老司机带你解锁进入末地的高难度姿势!...
  6. 你跟大神程序员的差距,就在这8本内功心法
  7. .net core webapi 文件上传在 Swagger 文档中的有好提示处理
  8. 大数据怎样帮助运维工程师实现无死角监控?
  9. Tomcat端口占用的处理方式
  10. C# 事件和Unity3D
  11. 深圳大学计算机考研教材,广东-深圳大学计算机考研院校初试科目及参考书汇总...
  12. 微型计算机是以微处理器为基础,在计算机中以微处理器为核心组成的微型计算机属于第几代计算机...
  13. 广告商业形态与应用架构
  14. 杭州电子科技大学acm--2006
  15. 一步一步实现现代前端单元测试
  16. Gitlab的自动流水线搭建
  17. OPC教程三:KEPServerEX6的使用
  18. fiddler接口基础
  19. C语言基础之32个关键字
  20. 虚拟机的Nginx安装配置

热门文章

  1. B. All the Vowels Please
  2. python3 :习题40、习题41
  3. 弹性伸缩、安全高效!华为云服务器助力企业数字化转型
  4. jQuery小游戏——小鸟飞行闪躲
  5. Shannon理论——笔记1
  6. ERROR Error: command failed: pnpm install --reporter silent --shamefully-hoist 错误解决办法
  7. leetcode 455 分发饼干(c++和python) 贪心算法
  8. 使用AdaBoost预测预测大盘涨跌
  9. mac 删除系统应用
  10. 蜡烛图(K线图)-2反转形态