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ù)器的認證信息
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ù)器的認證信息
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-09
Spring @Valid和@Validated區(qū)別和用法實例
這篇文章主要介紹了Spring @Valid和@Validated區(qū)別和用法實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-04-04
SpringMVC中@RequestMapping注解的實現(xiàn)
RequestMapping是一個用來處理請求地址映射的注解,本文主要介紹了SpringMVC中@RequestMapping注解的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-01-01

