`
z_xiaofei168
  • 浏览: 201011 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

 

 电子商务网站使用

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

 

 

 

 

 

一、    前面的准备工作 

 

1:邮箱服务器的设置:

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

 

    第一步:

 

   

 

    第二步:

 

   

 

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>

 

 

11
9
分享到:
评论
6 楼 yulanlian 2012-09-06  
yulanlian 写道
亲啊,能加一下我的QQ么?17903425  想和您讨论点问题?

  要不前辈 您把QQ留一下?我请教您这个程序得相关问题!!!
5 楼 yulanlian 2012-08-24  
亲啊,能加一下我的QQ么?17903425  想和您讨论点问题?
4 楼 z_xiaofei168 2011-06-08  
bluky999 写道
这跟B2C也没多大关系啊,而且跟发email也不是很耦合啊,哈哈

就是一个SPRING等框架的DAO-SERVICE-ACTION配置,不一样的地方就是 异步啊 等 

注册的时候可以自动发邮件啊,然后登陆自己的邮件进行激活啊,现在的一些网站不都是这样的吗?我最后在做B2C,所以我就这么叫啊,哈哈
3 楼 bluky999 2011-06-08  
这跟B2C也没多大关系啊,而且跟发email也不是很耦合啊,哈哈

就是一个SPRING等框架的DAO-SERVICE-ACTION配置,不一样的地方就是 异步啊 等 
2 楼 z_xiaofei168 2011-06-08  
465272694 写道
想问下两个xml分别是对应哪两个配置文件的xml?新手对配置文件有些模糊。

XML文件是在spring.xml中配置的。
1 楼 465272694 2011-06-08  
想问下两个xml分别是对应哪两个配置文件的xml?新手对配置文件有些模糊。

相关推荐

    b2c电子商务网站

    【标题】"b2c电子商务网站"涉及到的核心概念是B2C(Business-to-Consumer)模式,这是一种在线商业交易模式,其中商家直接面向消费者销售产品或服务。在B2C电子商务网站中,商家通常拥有一个功能完善的在线平台,...

    b2c电子商务网站源代码

    《全面解析B2C电子商务网站源代码》 在数字化时代,B2C(Business-to-Consumer)电子商务网站已经成为企业与消费者之间的重要交易桥梁。本文将深入探讨B2C电子商务网站的源代码,揭示其背后的技术架构和核心功能,...

    B2C电子商务网站系统源码

    【B2C电子商务网站系统源码】是一种基于Asp.net技术构建的在线零售平台,它提供了全面的功能以支持商业活动。Asp.net是Microsoft开发的一种Web应用程序框架,它以其高效、安全和易于维护的特性在Web开发领域广泛应用...

    B2C电子商务网站源码

    在描述中提到的“网站发布使用说明”是指一套指导用户如何部署和运行该B2C电子商务网站的文档。这些说明可能包括服务器配置、数据库设置、域名绑定、SSL证书安装、环境变量设定、网站性能优化等多个步骤,以确保用户...

    B2C电子商务网站设计详解

    详细介绍了开发电子商务网站从功能模块分析到数据库设计流程 是一部值得看的文章

    B2C电子商务网站开发

    【B2C电子商务网站开发】是指企业面向个人消费者的在线商业交易模式,如阿里巴巴、淘宝网、当当网、亚马逊等知名平台。本章主要通过一个简单的案例——《闽台商城》来阐述B2C电子商务网站的开发过程,涵盖需求分析、...

    B2C电子商务网站分析与设计

    B2C电子商务网站分析与设计,中国知网上下载的文献

    (Java毕业设计)基于J2EE的B2C电子商务系统开发

    (Java毕业设计)基于J2EE的B2C电子商务系统开发(Java毕业设计)基于J2EE的B2C电子商务系统开发(Java毕业设计)基于J2EE的B2C电子商务系统开发(Java毕业设计)基于J2EE的B2C电子商务系统开发(Java毕业设计)基于J2EE的B2C...

    基于JSP的B2C电子商务网站的设计与实现

    基于JSP的B2C电子商务网站需要使用Apache Tomcat服务器作为网站的运行环境,使用JSP编程技术构建网站的前台和后台模块。同时,网站还需要使用MySQL数据库来存储网站的数据。 三、详细设计和实现 在详细设计和实现...

    本科毕业论文-—我国b2c电子商务网站的盈利模式分析.doc

    本科毕业论文-—我国b2c电子商务网站的盈利模式分析 知识点一: B2C 电子商务的定义和特点 B2C 电子商务是指企业将产品或服务通过互联网销售给个人消费者的交易模式。这种模式的特点是企业直接与消费者进行交易,...

    B2C电子商务网站运营与管理学习指南[1].doc

    "B2C电子商务网站运营与管理学习指南" 本文档旨在提供一个详细的B2C电子商务网站运营与管理学习指南,旨在帮助读者了解B2C电子商务网站的结构特点、购物流程、支付方式、会员管理功能等方面的知识。同时,本文档还...

    asp.net B2C电子商务网站系统源码

    【ASP.NET B2C电子商务网站系统源码】是面向企业级电子商务应用的开发框架,它基于微软的ASP.NET技术构建,旨在提供一个高效、稳定、功能丰富的在线购物平台。ASP.NET是一个强大的Web应用程序开发框架,它允许开发者...

    B2C电子商务解决方案

    【B2C电子商务解决方案】是针对企业在互联网上开展零售业务的一种专业策略,旨在帮助企业利用电子商务平台提高销售效率和顾客满意度。随着互联网的迅速发展,网上购物已成为消费者的主要购物渠道之一,尤其是在中国...

Global site tag (gtag.js) - Google Analytics