本週的進度是將每個註冊者所喜好的分類商品包成RSS供使用者訂閱,
和有新商品時會發送EMAIL通知,
這個部份已經完成,
而目前主要在修改論文還有測試自動發簡訊的功能.
2009年10月16日 星期五
自動發信
我使用的是JAVAMAIL來達成自動發信的功能,
好處是你只要有一個有提供外部SMTP的信箱,
不用自己架伺服器,
缺點是在發信的時候需要一些時間,
以下我是使用GMAIL為例
好處是你只要有一個有提供外部SMTP的信箱,
不用自己架伺服器,
缺點是在發信的時候需要一些時間,
以下我是使用GMAIL為例
try{
String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
Properties props = System.getProperties();
props.setProperty("mail.smtp.host", "smtp.gmail.com"); //設定使用GMAIL的SMTP
props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.port", "465"); //465是GMAIL提供的SMTP PORT
props.setProperty("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.auth", "true");
String username = GMAIL帳號
String password = GMAIL密碼
Session sendMailSession;
Store store;
Transport transport;
sendMailSession = Session.getInstance(props, new Authenticator(){
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username ,password );
}});
// -- Create a new message --
Message msg = new MimeMessage(sendMailSession);
// -- Set the FROM and TO fields --
msg.setFrom(new InternetAddress("寄件者信箱"));
msg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("收件者信箱",false));
msg.setSubject("標題");
msg.setText("內容");
msg.setSentDate(new Date());
Transport.send(msg);
// system.out.println("Message sent.");
// -- Set the FROM and TO fields --
}
catch(MessagingException m)
{
out.println(m.toString());
}
RSS修改
原本我的RSS是利用開啟一個XML新檔案然後寫入,
但是後來發現這個方法既不夠即時,
而且也會浪費主機空間,
唯一的好處是會有一份XML的備份檔,
不怕資料庫當掉,
而我後來修改成直接頁面PRINT出來,
只要在JSP檔頭加入
response.setHeader("content-type","text/xml;charset=utf-8");
將檔案判斷成XML,
就可以直接利用JSP頁面即時找尋資料供RSS使用.
但是後來發現這個方法既不夠即時,
而且也會浪費主機空間,
唯一的好處是會有一份XML的備份檔,
不怕資料庫當掉,
而我後來修改成直接頁面PRINT出來,
只要在JSP檔頭加入
response.setHeader("content-type","text/xml;charset=utf-8");
將檔案判斷成XML,
就可以直接利用JSP頁面即時找尋資料供RSS使用.
訂閱:
文章 (Atom)