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

 更新时间:2016年06月06日 15:44:49   作者:eson_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 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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java使用正则表达式删除所有HTML标签的方法示例

    Java使用正则表达式删除所有HTML标签的方法示例

    这篇文章主要介绍了Java使用正则表达式删除所有HTML标签的方法,结合完整实例形式分析了java针对HTML页面元素script标签、style标签、html标签等的正则匹配相关操作技巧,需要的朋友可以参考下
    2017-06-06
  • java中gc算法实例用法

    java中gc算法实例用法

    在本篇文章里小编给大家整理了一篇关于java中gc算法实例用法,有兴趣的朋友们可以参考学习下。
    2021-01-01
  • 如何解决idea安装插件后报错打不开问题

    如何解决idea安装插件后报错打不开问题

    这篇文章主要介绍了如何解决idea安装插件后报错打不开问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • 使用Java实现创建Excel表单控件

    使用Java实现创建Excel表单控件

    在数据填报时,创建Excel表单控件是一项常见的任务,它可以极大地简化数据收集和处理的过程,本文主要介绍了如何使用Java实现创建Excel表单控件,感兴趣的可以了解下
    2024-03-03
  • java.lang.NumberFormatException异常解决方案详解

    java.lang.NumberFormatException异常解决方案详解

    这篇文章主要介绍了java.lang.NumberFormatException异常解决方案详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • springboot实战权限管理功能图文步骤附含源码

    springboot实战权限管理功能图文步骤附含源码

    这篇文章主要为大家介绍了springboot实战权限管理功能图文步骤及示例源码,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 浅谈Java ThreadPoolExecutor的使用

    浅谈Java ThreadPoolExecutor的使用

    今天我们来学习一下Java ThreadPoolExecutor的使用,文中有非常详细的介绍及代码示例,对正在学习Java的小伙伴们有很大的帮助,需要的朋友可以参考下
    2021-05-05
  • springboot集成redis存对象乱码的问题及解决

    springboot集成redis存对象乱码的问题及解决

    这篇文章主要介绍了springboot集成redis存对象乱码的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Java 中POI 导入EXCEL2003 和EXCEL2007的实现方法

    Java 中POI 导入EXCEL2003 和EXCEL2007的实现方法

    这篇文章主要介绍了Java 中POI 导入EXCEL2003 和EXCEL2007的实现方法的相关资料,希望通过本文大家能掌握理解这种方法,需要的朋友可以参考下
    2017-09-09
  • Java Handler同步屏障浅析讲解

    Java Handler同步屏障浅析讲解

    同步屏障机制是什么?Handler发送的消息分为普通消息、屏障消息、异步消息,一旦Looper在处理消息时遇到屏障消息,那么就不再处理普通的消息,而仅仅处理异步的消息。不再使用屏障后,需要撤销屏障,不然就再也执行不到普通消息了
    2022-08-08

最新评论