SSH框架网上商城项目第25战之使用java email给用户发送邮件

网友投稿 168 2023-07-15


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 eOgEGimplements EmailUtil {

//参数接收顾客的邮箱地址和订单编号

@Override

public void sendEmail(String emailAddress, String id) {

// 1. 登陆邮件客户端(创建会话session)

Properties prop = new Properties();

Session session = null;

Message message = null;

TeOgEGransport transport = null;

try {

prop.setProperty("mail.transport.protocol", "smtp");

// 创建了session会话

session = Session.getDefaultInstance(prop);

// 设置debug模式来调试发送信息

session.setDebug(true);

// 创建一封邮件对象

message = new MimeMessage(session);

/http:/// 写信

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

完成了工具类的封装,接下来我们把http://该工具类放到BaseAction中,通过@Resource注解注入进来,供Action使用,下面我们完善前面的payAction中的backBank()方法,如下:

@Controller("payAction")

@Scope("prototype")

public class PayAction extends BaseAction 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参数中是用户的邮箱和电话,第一个是邮箱第二个是电话,用逗号隔开了,所以我们首先要获取用户的邮箱地址,然后再来发送邮件。好了,支付完成后给用户发送邮件的功能就完成了。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Mybatis逆工程jar包的修改和打包
下一篇:SSH框架网上商城项目第24战之Struts2中处理多个Model请求的方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~