当前位置: 移动技术网 > IT编程>开发语言>Java > SSH框架网上商城项目第25战之使用java email给用户发送邮件

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

2019年07月22日  | 移动技术网IT编程  | 我要评论

当用户购买完商品后,我们应该向用户发送一封邮件,告诉他订单已生成之类的信息,邮箱地址是从用户的基本信息中获取,好了,首先我们来看一下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参数中是用户的邮箱和电话,第一个是邮箱第二个是电话,用逗号隔开了,所以我们首先要获取用户的邮箱地址,然后再来发送邮件。好了,支付完成后给用户发送邮件的功能就完成了。

原文链接:

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网