對這文章發表回應
發表限制: 非會員 可以發表
發表者: 冷日 發表時間: 2008/3/18 6:49:51
JavaMail API的使用:
- 建置JavaMail的開發環境:
(1)下載mail.jar:至 http://java.sun.com/products/javamail/downloads/index.html 下載JavaMail 1.3.2 API(或至本站下載)
(2)下載activation.jar:至 http://java.sun.com/products/javabeans/glasgow/jaf.html 下載JAF 1.0.2(或至本站下載)
(3)解壓縮JavaMail,將mail.jar複製到到應用程式目錄下的WEB-INFO/lib目錄中即可
(4)解壓縮JAF,將activation.jar複製到到應用程式目錄下的WEB-INFO/lib目錄中即可
- 撰寫簡單輸入介面程式及寄信程式:(取自JSP 2.0技術手冊)
簡單的郵件訊息輸入介面:
<html>
<head>
<title>JavaMail.html</title>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
</head>
<body>
<h2>利用JavaMail來傳送電子郵件</h2>
<form name="Form" method="post" action="JavaMail.jsp">
<p>寄信人:<input type="text" name="From" size="30" maxlength="30"></p>
<p>收信人:<input type="text" name="To" size="30" maxlength="30"></p>
<p>主題:<input type="text" name="Subject" size="30" maxlength="30"></p>
<p>內容:</p><p><textarea name="Message" cols=40 rows=5></textarea></p>
<input type="submit" value="傳送"> <input type="reset" value="清除">
</form>
</body>
</html>
信件寄出::
<%@ page import="javax.mail.*" %> <==?#93;含在mail.jar
<%@ page import="javax.mail.internet.*" %> <==?#93;含在mail.jar
<%@ page import="javax.activation.*" %> <==?#93;含在activation.jar
<%@ page import="java.util.*,java.io.*" %>
<%@ page contentType="text/html;charset=big5" %>
<html>
<head>
<title>JavaMail.jsp</title>
</head>
<body>
<h2>利用JavaMail來傳送電子郵件 </h2>
<%
InternetAddress[] address = null;
request.setCharacterEncoding("big5");
String mailserver = "mail.dwu.edu.tw"; <=此處所?#93;必須和寄件人的信箱同一台伺服器,
String From = request.getParameter("From"); 並且必須考?#123;伺服器是否會mail-rely
String to = request.getParameter("To");
String Subject = request.getParameter("Subject");
String messageText = request.getParameter("Message");
boolean sessionDebug = false;
try {
// ?#93;定所要用的Mail 伺服器和所使用的傳送協定
java.util.Properties props = System.getProperties();
props.put("mail.host",mailserver);
props.put("mail.transport.protocol","smtp"); <=?#93;定所使用的protocol為SMTP(Small Mail Transfer Protocol)
// 產生新的Session 服務
javax.mail.Session mailSession = javax.mail.Session.getDefaultInstance(props,null);
mailSession.setDebug(sessionDebug);
Message msg = new MimeMessage(mailSession);
// ?#93;定傳送郵件的發信人
msg.setFrom(new InternetAddress(From));
// ?#93;定傳送郵件至收信人的信箱
address = InternetAddress.parse(to,false);
msg.setRecipients(Message.RecipientType.TO, address);
// ?#93;定信中的主題
msg.setSubject(Subject);
// ?#93;定送信的時間
msg.setSentDate(new Date());
// ?#93;定傳送信的MIME Type
msg.setText(messageText);
// 送信
Transport.send(msg);
out.println("郵件己順利傳送");
}
catch (MessagingException mex) {
mex.printStackTrace();
}
%>
</body>
</html>
簡單的郵件訊息輸入介面+附加檔案功能+可用HTML格式:
<html>
<head>
<title>JavaMail.html</title>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
</head>
<body>
<h2>利用JavaMail來傳送電子郵件 - 附?#91;檔案</h2>
<form name="SendMessage" Method="post" action="JavaMail3.jsp" enctype="multipart/form-data">
<p>寄信人:<input type="text" name="From" size="30" maxlength="30"></p>
<p>收信人:<input type="text" name="To" size="30" maxlength="30"></p>
<p>主題:<input type="text" name="Subject" size="30" maxlength="30"></p>
<p>格式:<select name="Type" size="1">
<option value="text/plain">Text</option>
<option value="text/html">HTML</option>
</select></p>
<p>附?#91;檔案:<input type="file" name="FileName" size="20" maxlength="20"></p>
<p>內容:</p><p><textarea name="Message" cols=40 rows=5></textarea></p>
<input type="submit" value="傳送">
<input type="reset" value="清除">
</form>
</body>
</html>
信件寄出--(JavaMail3.jsp):
<%@ page import="javax.mail.*" %>
<%@ page import="javax.mail.internet.*" %>
<%@ page import="javax.activation.*" %>
<%@ page import="java.util.*,java.io.*" %>
<%@ page import="com.oreilly.servlet.MultipartRequest" %>
<%@ page contentType="text/html;charset=big5" %>
<html>
<head>
<title>JavaMail.jsp</title>
</head>
<body>
<h2>利用JavaMail來傳送電子郵件 - 附?#91;檔案</h2>
<%
InternetAddress[] address = null;
request.setCharacterEncoding("big5");
MultipartRequest multi = new MultipartRequest(request , "." , 5*1024*1024 , "big5");
String mailserver = "mail.dwu.edu.tw";
String From = multi.getParameter("From");
String to = multi.getParameter("To");
String Subject = multi.getParameter("Subject");
String type = multi.getParameter("Type");
String messageText = multi.getParameter("Message");
String FileName = multi.getFilesystemName("FileName");
boolean sessionDebug = false;
try {
// ?#93;定所要用的Mail 伺服器和所使用的傳送協定
java.util.Properties props = System.getProperties();
props.put("mail.host",mailserver);
props.put("mail.transport.protocol","smtp");
// 產生新的Session 服務
javax.mail.Session mailSession = javax.mail.Session.getDefaultInstance(props,null);
mailSession.setDebug(sessionDebug);
Message msg = new MimeMessage(mailSession);
// ?#93;定傳送郵件的發信人
msg.setFrom(new InternetAddress(From));
// ?#93;定傳送郵件至收信人的信箱
address = InternetAddress.parse(to,false);
msg.setRecipients(Message.RecipientType.TO, address);
// ?#93;定信中的主題
msg.setSubject(Subject);
// ?#93;定送信的時間
msg.setSentDate(new Date());
if (FileName != null)
{
File file = new File(FileName);
// 如果有附?#91;檔案時,先將郵件內容部份先存起來
MimeBodyPart mbp1 = new MimeBodyPart();
// ?#93;定郵件內容的型態為 text/plain 或 text/html
mbp1.setContent(messageText, type + ";charset=big5");
// 再來對檔案作處理
MimeBodyPart mbp2 = new MimeBodyPart();
FileDataSource fds = new FileDataSource(FileName);
mbp2.setDataHandler(new DataHandler(fds));
mbp2.setFileName(MimeUtility.encodeText(fds.getName(), "big5", "B"));
// 最後再將二者整合起來,當作一份郵件送出
Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp1);
mp.addBodyPart(mbp2);
msg.setContent(mp);
}
else
{
// 若沒有檔案時,就直接存郵件內容
msg.setContent(messageText,type + ";charset=big5");
}
Transport.send(msg);
out.println("郵件己順利傳送");
}
catch (MessagingException mex)
{
mex.printStackTrace();
}
%>
</body>
</html>