SSH框架網(wǎng)上商城項目第25戰(zhàn)之使用java email給用戶發(fā)送郵件
當(dāng)用戶購買完商品后,我們應(yīng)該向用戶發(fā)送一封郵件,告訴他訂單已生成之類的信息,郵箱地址是從用戶的基本信息中獲取,好了,首先我們來看一下java中發(fā)送郵件的方法。
1. java中發(fā)送email的方法
在完善這個項目之前,先來回顧一下java中是如何發(fā)送郵件的,首先肯定需要發(fā)送郵件的jar包:mail.jar,導(dǎo)入到lib目錄下,好了,下面我們先寫一個普通的java程序來回顧一下java email的知識點:
public class SendEmailDemo { public static void main(String[] args) throws Exception { //1. 登陸郵件客戶端(創(chuàng)建會話session) Properties prop = new Properties(); prop.setProperty("mail.transport.protocol", "smtp"); //創(chuàng)建了session會話 Session session = Session.getDefaultInstance(prop); //設(shè)置debug模式來調(diào)試發(fā)送信息 session.setDebug(true); //創(chuàng)建一封郵件對象 Message message = new MimeMessage(session); //寫信 message.setSubject("歡迎訪問我的CSDN博客主頁!"); //正文內(nèi)容 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(); //鏈接郵件服務(wù)器的認(rèn)證信息 transport.connect("smtp.163.com", "nishengwus", "xxxxx密碼"); // 設(shè)置收件人地址,并發(fā)送郵件 transport.sendMessage(message, new InternetAddress[]{new InternetAddress("694076359@qq.com")}); transport.close(); } }
上面就是用java發(fā)送郵件的流程:創(chuàng)建會話–>封裝郵件信息–>設(shè)置發(fā)件人地址–>設(shè)置收件人地址–>發(fā)送。
2. 封裝發(fā)送郵件功能
回顧了java發(fā)送郵件的方法后,我們將這個流程封裝到一個工具類中,新建一個EmailUtilImpl實現(xiàn)類,完成后 抽取成EmailUtil接口,如下:
//抽取后的EmailUtil接口 public interface EmailUtil { public abstract void sendEmail(String emailAddress, String id); } //EmailUtilImpl實現(xiàn)類 @Component("emailUtil") public class EmailUtilImpl implements EmailUtil { //參數(shù)接收顧客的郵箱地址和訂單編號 @Override public void sendEmail(String emailAddress, String id) { // 1. 登陸郵件客戶端(創(chuàng)建會話session) Properties prop = new Properties(); Session session = null; Message message = null; Transport transport = null; try { prop.setProperty("mail.transport.protocol", "smtp"); // 創(chuàng)建了session會話 session = Session.getDefaultInstance(prop); // 設(shè)置debug模式來調(diào)試發(fā)送信息 session.setDebug(true); // 創(chuàng)建一封郵件對象 message = new MimeMessage(session); // 寫信 message.setSubject("網(wǎng)上商城訂單反饋"); // 正文內(nèi)容 message.setContent("顧客您好,歡迎您光顧網(wǎng)上商城,訂單" + id + "已支付成功!", "text/html;charset=utf-8"); // 附件人地址 message.setFrom(new InternetAddress("soft03_test@sina.com")); transport = session.getTransport(); // 鏈接郵件服務(wù)器的認(rèn)證信息 transport.connect("smtp.sina.com", "soft03_test", "soft03_test"); // 設(shè)置收件人地址,并發(fā)送郵件 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 { //省略不相關(guān)的代碼…… public void backBank() { BackData backData = (BackData)model; System.out.println(model); boolean isOK = payService.checkBackData(backData); if(isOK) { //1. 更新訂單狀態(tài),參數(shù)是自己根據(jù)數(shù)據(jù)庫中的情況傳進去的,用來測試 forderService.updateStatusById(Integer.valueOf(201605006), 2); //2. 根據(jù)user郵箱地址,發(fā)送郵件 String emailAddress = backData.getR8_MP().split(",")[0]; emailUtil.sendEmail(emailAddress, backData.getR6_Order()); //3. 發(fā)送手機短信,下一篇博客來介紹發(fā)送短信的功能 System.out.println("----success!!----"); } else { System.out.println("----false!!!----"); } } }
從易寶那邊返回的信息中r6_Order參數(shù)中保存的是訂單的編號,r8_MP參數(shù)中是用戶的郵箱和電話,第一個是郵箱第二個是電話,用逗號隔開了,所以我們首先要獲取用戶的郵箱地址,然后再來發(fā)送郵件。好了,支付完成后給用戶發(fā)送郵件的功能就完成了。
原文鏈接:http://blog.csdn.net/eson_15/article/details/51475046
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java 避免出現(xiàn)NullPointerException(空指針)的方法總結(jié)
這篇文章主要介紹了java 避免出現(xiàn)NullPointerException(空指針)的方法總結(jié)的相關(guān)資料,需要的朋友可以參考下2017-09-09Spring @Valid和@Validated區(qū)別和用法實例
這篇文章主要介紹了Spring @Valid和@Validated區(qū)別和用法實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-04-04SpringMVC中@RequestMapping注解的實現(xiàn)
RequestMapping是一個用來處理請求地址映射的注解,本文主要介紹了SpringMVC中@RequestMapping注解的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-01-01