練功房推薦書單

  • 猛虎出柙雙劍合璧版--最新 OCA / OCP Java SE 7 Programmer 專業認證 (電子書)
  • 流浪教師存零股存到3000萬(全新增修版)(書+DVD)
  • 開始在關西自助旅行(京都‧大阪‧神戶‧奈良)(全新增訂版)
  • 不敗教主的300張股票存股術

JSP精選實用範例(一):郵件發送 RSS feed
討論區首頁 » 網頁程式設計 Web Development
發表人 內容
andowson

七段學員
[Avatar]

註冊時間: 2007/1/2
文章: 711
來自: 台北
離線
預先安裝函式庫:Apache Commons Email, Sun JavaMail API, JavaBeans Activation Framework (JAF)
程式碼:
<%@ page contentType="text/html; charset=big5"%>

<%@ page import="org.apache.commons.mail.SimpleEmail"%>
<%
String subject="歡迎光臨";
String message = "這是一封測試信,收到請自行刪除";
SimpleEmail simpleEmail = new SimpleEmail();
simpleEmail.setHostName("smtp.mycompany.com");
simpleEmail.setCharset("Big5");
simpleEmail.addTo("you@yourcompany.com", "親愛的會員");
simpleEmail.setFrom("service@mycompany.com", "網站客服中心");
simpleEmail.setSubject(subject);
simpleEmail.setMsg(message);
simpleEmail.send();
out.println("郵件發送成功");
%>
 檔案名稱 mailtest.jsp [Disk] 下載
 描述 郵件發送測試
 檔案大小 608 bytes
 下載次數:  125 次


分享經驗 累積智慧
[WWW]
andowson

七段學員
[Avatar]

註冊時間: 2007/1/2
文章: 711
來自: 台北
離線
使用 Gmail 的 SMTP 發信(通過SSL port: 465)
程式碼:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="org.apache.commons.mail.DefaultAuthenticator" %>
<%@ page import="org.apache.commons.mail.Email" %>
<%@ page import="org.apache.commons.mail.EmailException" %>
<%@ page import="org.apache.commons.mail.HtmlEmail" %>
<%
String subject="測試使用 Gmail SMTP SSL發信";
String message = "<html><head><title>測試</title></head><body>這是一封測試信,收到請自行刪除</body></html>";

Email email = new HtmlEmail();
String authuser = "username@gmail.com";
String authpwd = "the_password";
email.setHostName("smtp.gmail.com");
email.setSmtpPort(465);
email.setAuthenticator(new DefaultAuthenticator(authuser, authpwd));
email.setDebug(true);
email.setSSL(true);
email.setSslSmtpPort("465");
email.setCharset("UTF-8");
email.setSubject(subject);
try {
email.setFrom("username@gmail.com", "網站客服中心");
email.setMsg(message);
email.addTo("somebody@30elite.com", "親愛的會員");
email.send();
out.println("郵件發送成功");
} catch (EmailException e) {
e.printStackTrace();
}
%>


參考資料:
http://stackoverflow.com/questions/1783710/sending-an-email-using-commons-email-to-gmail
 檔案名稱 gmailsmtp_ssl.jsp [Disk] 下載
 描述 Send an email via Gmail SMTP through SSL port(465)
 檔案大小 1 Kbytes
 下載次數:  103 次


分享經驗 累積智慧
[WWW]
andowson

七段學員
[Avatar]

註冊時間: 2007/1/2
文章: 711
來自: 台北
離線
使用 Gmail 的 SMTP 發信(通過TLS port: 587)
程式碼:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="org.apache.commons.mail.DefaultAuthenticator" %>
<%@ page import="org.apache.commons.mail.Email" %>
<%@ page import="org.apache.commons.mail.EmailException" %>
<%@ page import="org.apache.commons.mail.HtmlEmail" %>
<%
String subject="測試使用 Gmail SMTP TLS發信";
String message = "<html><head><title>測試</title></head><body>這是一封測試信,收到請自行刪除</body></html>";

Email email = new HtmlEmail();
String authuser = "username@gmail.com";
String authpwd = "the_password";
email.setHostName("smtp.gmail.com");
email.setSmtpPort(587);
email.setAuthenticator(new DefaultAuthenticator(authuser, authpwd));
email.setDebug(true);
email.setTLS(true);
email.setSslSmtpPort("587");
email.setCharset("UTF-8");
email.setSubject(subject);
try {
email.setFrom("username@gmail.com", "網站客服中心");
email.setMsg(message);
email.addTo("somebody@30elite.com", "親愛的會員");
email.send();
out.println("郵件發送成功");
} catch (EmailException e) {
e.printStackTrace();
}
%>
 檔案名稱 gmailsmtp_tls.jsp [Disk] 下載
 描述 Send an email via Gmail SMTP through TLS port(587)
 檔案大小 1 Kbytes
 下載次數:  45 次


分享經驗 累積智慧
[WWW]
andowson

七段學員
[Avatar]

註冊時間: 2007/1/2
文章: 711
來自: 台北
離線
發送HTML格式的郵件
預先安裝函式庫:Apache Commons IO
假設樣板檔名為message.html,放在網頁應用程式的根目錄下,發送給somebody@andowson.com。
程式碼:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.io.File" %>
<%@ page import="java.text.MessageFormat" %>
<%@ page import="org.apache.commons.io.FileUtils" %>
<%@ page import="org.apache.commons.mail.DefaultAuthenticator" %>
<%@ page import="org.apache.commons.mail.EmailException" %>
<%@ page import="org.apache.commons.mail.HtmlEmail" %>
<%
String subject="測試使用 Gmail SMTP SSL發信";
String filename = application.getRealPath("/") + "message.html";
String template = FileUtils.readFileToString(new File(filename), "UTF-8");
String message = "";

HtmlEmail email = new HtmlEmail();
String authuser = "username@gmail.com";
String authpwd = "the_password";
email.setHostName("smtp.gmail.com");
email.setSmtpPort(465);
email.setAuthenticator(new DefaultAuthenticator(authuser, authpwd));
email.setDebug(true);
email.setSSL(true);
email.setSslSmtpPort("465");
email.setCharset("UTF-8");
email.setSubject(subject);
try {
email.setFrom("username@gmail.com", "網站客服中心");
message = MessageFormat.format(template, new Object[] { "somebody", "http://www.andowson.com/" });
email.setHtmlMsg(message);
email.addTo("somebody@andowson.com", "親愛的會員");
email.send();
out.println("郵件發送成功");
} catch (EmailException e) {
e.printStackTrace();
}
%>

message.html:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>e-paper</title>
</head>
<body>
親愛的{0}您好,請點選這個<a href="{1}">連結至活動網頁。

這是一封測試信,收到請自行刪除
</body>
</html>

 檔案名稱 gmailsmtp_ssl_htmlmsg.jsp [Disk] 下載
 描述 Send HTML Message
 檔案大小 1 Kbytes
 下載次數:  34 次

 檔案名稱 message.html [Disk] 下載
 描述 HTML Message Template File
 檔案大小 378 bytes
 下載次數:  36 次


分享經驗 累積智慧
[WWW]
qq4111

十級學員

註冊時間: 2011/12/17
文章: 1
離線
請問,若是要多個寄件者的話,應該怎麼做呢?
我是一直出現這錯誤Caused by: javax.mail.internet.AddressException: Illegal address in string
andowson

七段學員
[Avatar]

註冊時間: 2007/1/2
文章: 711
來自: 台北
離線
寄件者只能有一個,可以透過Email類別的setFrom的method來設定,可接受三種參數呼叫方式:
setFrom(String email)

setFrom(String email, String name)
setFrom(String email, String name, String charset)

如果要收件者,可以透過Email類別的addTo的method來增加,類似setFrom有三種參數呼叫方式:
addTo(String email)

addTo(String email, String name)
addTo(String email, String name, String charset)

收件者可以有多個,只要連續呼叫多次的addTo即可(例如透過迴圈)或者先將收件者整理成一個清單(List),再呼叫setTo一次設定好
setTo(Collection aCollection)


至於您的錯誤訊息,可能是charset編碼問題,也可能是其他問題,得看到程式碼才能得知。



分享經驗 累積智慧
[WWW]
 
討論區首頁 » 網頁程式設計 Web Development
前往:   
行動版