當用戶購買完商品後,我們應該向用戶發送一封郵件,告訴他訂單已生成之類的信息,郵箱地址是從用戶的基本信息中獲取,好了,首先我們來看一下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("[email protected]"));
Transport transport = session.getTransport();
//鏈接郵件服務器的認證信息
transport.connect("smtp.163.com", "nishengwus", "xxxxx密碼");
// 設置收件人地址,併發送郵件
transport.sendMessage(message, new InternetAddress[]{new InternetAddress("[email protected]")});
transport.close();
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
上面就是用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("[email protected]"));
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);
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
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!!!----");
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
從易寶那邊返回的信息中r6_Order參數中保存的是訂單的編號,r8_MP參數中是用戶的郵箱和電話,第一個是郵箱第二個是電話,用逗號隔開了,所以我們首先要獲取用戶的郵箱地址,然後再來發送郵件。好了,支付完成後給用戶發送郵件的功能就完成了。
相關閱讀:http://blog.csdn.net/column/details/str2hiberspring.html
整個項目的源碼下載地址:http://blog.csdn.net/eson_15/article/details/51479994
—–樂於分享,共同進步!
—–更多文章請看:http://blog.csdn.net/eson_15