【SSH网上商城项目实战25】使用java email给用户发送邮件
当用户购买完商品后,我们应该向用户发送一封邮件,告诉他订单已生成之类的信息,邮箱地址是从用户的基本信息中获取,好了,首先我们来看一下java中发送邮件的方法。
1. java中发送email的方法 |
在完善这个项目之前,先来回顾一下java中是如何发送邮件的,首先肯定需要发送邮件的jar包:mail.jar,导入到lib目录下,好了,下面我们先写一个普通的java程序来回顾一下java email的知识点:
public class SendEmailDemo {
public static void main(String[] args) throws Exception {
//1. 登陆邮件客户端(创建会话session)
Properties prop = new Properties();
prop.setProperty("mail.transport.protocol", "smtp");
//创建了session会话
Session session = Session.getDefaultInstance(prop);
//设置debug模式来调试发送信息
session.setDebug(true);
//创建一封邮件对象
Message message = new MimeMessage(session);
//写信
message.setSubject("欢迎访问我的CSDN博客主页!");
//正文内容
message.setContent("欢迎访问我的CSDN博客主页:http://blog.csdn.net/eson_15"
+ ",么么哒~", "text/html;charset=utf-8");
//附件人地址
message.setFrom(new InternetAddress("nishengwus@163.com"));
Transport transport = session.getTransport();
//链接邮件服务器的认证信息
transport.connect("smtp.163.com", "nishengwus", "xxxxx密码");
// 设置收件人地址,并发送邮件
transport.sendMessage(message, new InternetAddress[]{new InternetAddress("694076359@qq.com")});
transport.close();
}
}
上面就是用java发送邮件的流程:创建会话–>封装邮件信息–>设置发件人地址–>设置收件人地址–>发送。
2. 封装发送邮件功能 |
回顾了java发送邮件的方法后,我们将这个流程封装到一个工具类中,新建一个EmailUtilImpl实现类,完成后 抽取成EmailUtil接口,如下:
//抽取后的EmailUtil接口
public interface EmailUtil {
public abstract void sendEmail(String emailAddress, String id);
}
//EmailUtilImpl实现类
@Component("emailUtil")
public class EmailUtilImpl implements EmailUtil {
//参数接收顾客的邮箱地址和订单编号
@Override
public void sendEmail(String emailAddress, String id) {
// 1. 登陆邮件客户端(创建会话session)
Properties prop = new Properties();
Session session = null;
Message message = null;
Transport transport = null;
try {
prop.setProperty("mail.transport.protocol", "smtp");
// 创建了session会话
session = Session.getDefaultInstance(prop);
// 设置debug模式来调试发送信息
session.setDebug(true);
// 创建一封邮件对象
message = new MimeMessage(session);
// 写信
message.setSubject("网上商城订单反馈");
// 正文内容
message.setContent("顾客您好,欢迎您光顾网上商城,订单" + id + "已支付成功!", "text/html;charset=utf-8");
// 附件人地址
message.setFrom(new InternetAddress("soft03_test@sina.com"));
transport = session.getTransport();
// 链接邮件服务器的认证信息
transport.connect("smtp.sina.com", "soft03_test", "soft03_test");
// 设置收件人地址,并发送邮件
transport.sendMessage(message, new InternetAddress[] { new InternetAddress(emailAddress) });
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
} finally {
try {
transport.close();
} catch (MessagingException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
}
3. 完善payAction |
完成了工具类的封装,接下来我们把该工具类放到BaseAction中,通过@Resource注解注入进来,供Action使用,下面我们完善前面的payAction中的backBank()方法,如下:
@Controller("payAction")
@Scope("prototype")
public class PayAction extends BaseAction<Object> implements ParameterAware {
//省略不相关的代码……
public void backBank() {
BackData backData = (BackData)model;
System.out.println(model);
boolean isOK = payService.checkBackData(backData);
if(isOK) {
//1. 更新订单状态,参数是自己根据数据库中的情况传进去的,用来测试
forderService.updateStatusById(Integer.valueOf(201605006), 2);
//2. 根据user邮箱地址,发送邮件
String emailAddress = 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参数中是用户的邮箱和电话,第一个是邮箱第二个是电话,用逗号隔开了,所以我们首先要获取用户的邮箱地址,然后再来发送邮件。好了,支付完成后给用户发送邮件的功能就完成了。
【SSH网上商城项目实战25】使用java email给用户发送邮件的更多相关文章
- 【SSH网上商城项目实战30】项目总结
转自:https://blog.csdn.net/eson_15/article/details/51479994 0. 写在前面 项目基本完成了,加上这个总结,与这个项目相关的博客也写了30篇了 ...
- 【SSH网上商城项目实战30】项目总结(附源码下载地址)
项目基本完成了,加上这个总结,与这个项目相关的博客也写了30篇了,积少成多,写博客的过程是固化思路的一个过程,对自己很有用,同时也能帮助别人.顺便说个题外话,在学习的过程中肯定会遇到很多异常出现,我们 ...
- 【SSH网上商城项目实战27】域名空间的申请和项目的部署及发布
转自:https://blog.csdn.net/wwww_com/article/details/54405355 前面陆陆续续的完成了网上商城的一些基本功能,虽然还有很多地方有待完善,但是不影响 ...
- 【SSH网上商城项目实战21】从Demo中看易宝支付的流程
转自: https://blog.csdn.net/eson_15/article/details/51447492 这一节我们先写一个简单点的Demo来测试易宝支付的流程,熟悉这个流程后, ...
- 【SSH网上商城项目实战16】Hibernate的二级缓存处理首页的热门显示
转自:https://blog.csdn.net/eson_15/article/details/51405911 网上商城首页都有热门商品,那么这些商品的点击率是很高的,当用户点击某个热门商品后需要 ...
- 【SSH网上商城项目实战01】整合Struts2、Hibernate4.3和Spring4.2
转自:https://blog.csdn.net/eson_15/article/details/51277324 今天开始做一个网上商城的项目,首先从搭建环境开始,一步步整合S2SH.这篇博文主要总 ...
- 【SSH网上商城项目实战15】线程、定时器同步首页数据(类似于博客定期更新排名)
转自:https://blog.csdn.net/eson_15/article/details/51387378 上一节我们做完了首页UI界面,但是有个问题:如果我在后台添加了一个商品,那么我必须重 ...
- 【SSH网上商城项目实战20】在线支付平台的介绍
转自:https://blog.csdn.net/eson_15/article/details/51441431 之前已经完成了首页的显示,用户添加购物车,确认订单等功能,下面就是支付功能的开发了. ...
- 【SSH网上商城项目实战03】使用EasyUI搭建后台页面框架
转自:https://blog.csdn.net/eson_15/article/details/51312490 前面两节,我们整合了SSH并且抽取了service和action部分的接口,可以说基 ...
随机推荐
- NOIp2018提高组游记
Day1 T1 积木大赛 NOIp2013D2T1.....看到的时候我还以为我记错了,以为原题是一次可以随便加,这题只能加一,出考场后查了下发现一模一样. #include <iostream ...
- 查看npm全局安装位置
查看npm全局安装位置:npm config get prefix 设置位置:npm config set prefix 填写位置
- nginx的几种负载均衡策略
转自https://www.cnblogs.com/1214804270hacker/p/9325150.html 一.关于Nginx的负载均衡 在服务器集群中,Nginx起到一个代理服务器的角色(即 ...
- SpringAOP的应用实例与总结
一:AOP的背景 面试的时候面试官让我解释一下什么是AOP,当时不懂,在路上就查了,AOP:面向切面的编程技术,困惑了,JAVA是OOP:面向对象的编程技术.那么自己就立刻查了几个为题:1.什么是面向 ...
- iOS 基础之NSArray数组去重
1.面试题 现在有一个数组arr1,它里面存储的字符串分别为@“zhangsan”@“lisi”@“wangwu”@“lisi”@“zhangsan”,请将它去重后赋值给可变数组arr2输出为:@“z ...
- iOS --UIScrollView的学习(三)自动轮播
1.前面两章讲的都是基本的用法,这次讲一下比较重要的功能分页和自动播放 2.UIPageControl--分页 2.1只要将UIScrollView的pageEnabled属性设置为YES,UIScr ...
- windows 域的安装方法
前面的博客中我们知道了 Windows AD域的升级,下面我谈谈Windows域的安装和卸载. 卸载AD域 配置备份AD域 安装子域 删除子域(必须在根域管理员模式下删除,否则无法删除) 删除命令 导 ...
- Vijos 小胖的奇偶
第一遍做 #include<iostream> #include<cstdlib> #include<cstdio> #include<cstring> ...
- 原创:centos7.1下 ZooKeeper 集群安装配置+Python实战范例
centos7.1下 ZooKeeper 集群安装配置+Python实战范例 下载:http://apache.fayea.com/zookeeper/zookeeper-3.4.9/zookeepe ...
- java常量类的实现方式_枚举类_项目实践
前言 众所周知,系统里有很多比如订单状态.审核状态:性别.结算方式.交易类型等属性,这些属性只有几个值,一般用0.1.2.3等的数字标识存入数据库,每次对这些属性所属对象的增删改操作,都会在代码里给状 ...