时间:2021-05-20
当用户购买完商品后,我们应该向用户发送一封邮件,告诉他订单已生成之类的信息,邮箱地址是从用户的基本信息中获取,好了,首先我们来看一下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参数中是用户的邮箱和电话,第一个是邮箱第二个是电话,用逗号隔开了,所以我们首先要获取用户的邮箱地址,然后再来发送邮件。好了,支付完成后给用户发送邮件的功能就完成了。
原文链接:http://blog.csdn.net/eson_15/article/details/51475046
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Java使用JavaMail发送邮件的方法。分享给大家供大家参考,具体如下:代码一、Email_Autherticator.java服务器验证代码
正文:网上发送Email,可要用到mail()函数了。其格式如下:mail(收信人,主题,内容,邮件文件头);在网上,发送Email给站长,通常是这样的:web
本文实例讲述了C#使用自带的email组件发送邮件的方法。分享给大家供大家参考。具体实现方法如下:#region邮件发送//////发送邮件支持HTML格式先引
本文实例讲述了C#简单发送email的方法。分享给大家供大家参考。具体实现方法如下:#region邮件发送//////发送邮件支持HTML格式先引用System
前言Java编程中发邮件也是常用的。但是原生的jdk自带的发送邮件用起来还是比较麻烦的。spring框架在Java语言中完全是神一样的存在,通过spring框架