SSH框架网上商城项目第25战之使用java email给用户发送邮件
当用户购买完商品后,我们应该向用户发送一封邮件,告诉他订单已生成之类的信息,邮箱地址是从用户的基本信息中获取,好了,首先我们来看一下java中发送邮件的方法。
1.java中发送email的方法
在完善这个项目之前,先来回顾一下java中是如何发送邮件的,首先肯定需要发送邮件的jar包:mail.jar,导入到lib目录下,好了,下面我们先写一个普通的java程序来回顾一下javaemail的知识点:
publicclassSendEmailDemo{
publicstaticvoidmain(String[]args)throwsException{
//1.登陆邮件客户端(创建会话session)
Propertiesprop=newProperties();
prop.setProperty("mail.transport.protocol","smtp");
//创建了session会话
Sessionsession=Session.getDefaultInstance(prop);
//设置debug模式来调试发送信息
session.setDebug(true);
//创建一封邮件对象
Messagemessage=newMimeMessage(session);
//写信
message.setSubject("欢迎访问我的CSDN博客主页!");
//正文内容
message.setContent("欢迎访问我的CSDN博客主页:http://blog.csdn.net/eson_15"
+",么么哒~","text/html;charset=utf-8");
//附件人地址
message.setFrom(newInternetAddress("nishengwus@163.com"));
Transporttransport=session.getTransport();
//链接邮件服务器的认证信息
transport.connect("smtp.163.com","nishengwus","xxxxx密码");
//设置收件人地址,并发送邮件
transport.sendMessage(message,newInternetAddress[]{newInternetAddress("694076359@qq.com")});
transport.close();
}
}
上面就是用java发送邮件的流程:创建会话–>封装邮件信息–>设置发件人地址–>设置收件人地址–>发送。
2.封装发送邮件功能
回顾了java发送邮件的方法后,我们将这个流程封装到一个工具类中,新建一个EmailUtilImpl实现类,完成后抽取成EmailUtil接口,如下:
//抽取后的EmailUtil接口
publicinterfaceEmailUtil{
publicabstractvoidsendEmail(StringemailAddress,Stringid);
}
//EmailUtilImpl实现类
@Component("emailUtil")
publicclassEmailUtilImplimplementsEmailUtil{
//参数接收顾客的邮箱地址和订单编号
@Override
publicvoidsendEmail(StringemailAddress,Stringid){
//1.登陆邮件客户端(创建会话session)
Propertiesprop=newProperties();
Sessionsession=null;
Messagemessage=null;
Transporttransport=null;
try{
prop.setProperty("mail.transport.protocol","smtp");
//创建了session会话
session=Session.getDefaultInstance(prop);
//设置debug模式来调试发送信息
session.setDebug(true);
//创建一封邮件对象
message=newMimeMessage(session);
//写信
message.setSubject("网上商城订单反馈");
//正文内容
message.setContent("顾客您好,欢迎您光顾网上商城,订单"+id+"已支付成功!","text/html;charset=utf-8");
//附件人地址
message.setFrom(newInternetAddress("soft03_test@sina.com"));
transport=session.getTransport();
//链接邮件服务器的认证信息
transport.connect("smtp.sina.com","soft03_test","soft03_test");
//设置收件人地址,并发送邮件
transport.sendMessage(message,newInternetAddress[]{newInternetAddress(emailAddress)});
}catch(Exceptione){
e.printStackTrace();
thrownewRuntimeException(e);
}finally{
try{
transport.close();
}catch(MessagingExceptione){
e.printStackTrace();
thrownewRuntimeException(e);
}
}
}
3.完善payAction
完成了工具类的封装,接下来我们把该工具类放到BaseAction中,通过@Resource注解注入进来,供Action使用,下面我们完善前面的payAction中的backBank()方法,如下:
@Controller("payAction")
@Scope("prototype")
publicclassPayActionextendsBaseAction<Object>implementsParameterAware{
//省略不相关的代码……
publicvoidbackBank(){
BackDatabackData=(BackData)model;
System.out.println(model);
booleanisOK=payService.checkBackData(backData);
if(isOK){
//1.更新订单状态,参数是自己根据数据库中的情况传进去的,用来测试
forderService.updateStatusById(Integer.valueOf(201605006),2);
//2.根据user邮箱地址,发送邮件
StringemailAddress=backData.getR8_MP().split(",")[0];
emailUtil.sendEmail(emailAddress,backData.getR6_Order());
//3.发送手机短信,下一篇博客来介绍发送短信的功能
System.out.println("----success!!----");
}else{
System.out.println("----false!!!----");
}
}
}
从易宝那边返回的信息中r6_Order参数中保存的是订单的编号,r8_MP参数中是用户的邮箱和电话,第一个是邮箱第二个是电话,用逗号隔开了,所以我们首先要获取用户的邮箱地址,然后再来发送邮件。好了,支付完成后给用户发送邮件的功能就完成了。
原文链接:http://blog.csdn.net/eson_15/article/details/51475046
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。