首先,介紹一下JavaMail,它是Sun發佈用來處理E-mail的API。它可以方便地執行一些常用的郵件傳輸,但由於目前還沒有加在標準的Java開發工具包中,故需要另外下載一下,另外還需要Sun的JavaBeans Activation Framework(JAF)。
先下載下圖的兩個工具
然後,將其解壓縮,將Javamail1_1_3.zip解壓後的mail.jar文件和jar-1_1_1.zip解壓後的activation.jar文件添加到JDK 安裝路徑下jre\lib\ext目錄中,如我的就放在了這裏
Email.htm代碼如下:
<HTML>
<HEAD>
<TITLE>編輯郵件</TITLE>
</HEAD>
<Script language="javascript">
function chkForm(theForm){
if (theForm.to.value=="")
{
alert("[收件人地址]不能爲空");
theForm.to.focus();
return (false);
}
}
</Script>
<BODY bgcolor=#FFCCCCC>
<CENTER>
<Form name="email" action="EmailSend.jsp" method="post"
οnsubmit="return chkForm(this)">
<Table cellspacing="2" cellpadding="2" border="1">
<tr>
<td>收件人:</td>
<td><input type="text" name="to" size="30" maxlength="30"></td>
</tr>
<tr>
<td>發件人:</td>
<td><input type="text" name="from" size="30" maxlength="30" ></td>
</tr>
<tr>
<td>抄 送:</td>
<td><input type="text" name="cs" size="30" maxlength="100"></td>
</tr>
<tr>
<td>主 題:</td>
<td><input type="text" name="subject" size="30" maxlength="30"></td>
</tr>
<tr>
<td colspan="2" align=center>
<textarea cols="40" rows="10" name="body"></textarea>
</td>
</tr>
<tr>
<td align=center colspan="2">
<input type="submit" name="submit" value="發送">
     <input type="Reset">
</td>
</tr>
</Table>
</Form>
</CENTER>
</BODY>
</HTML>
EmailSend.jsp代碼如下:
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.util.*" %>
<%@ page import="javax.mail.*" %>
<%@ page import="javax.mail.internet.*" %>
<%@ page import="javax.activation.*" %>
<HTML>
<HEAD>
<TITLE>郵件發送</TITLE>
</HEAD>
<BODY bgcolor=#FFCCCCC>
<%
String host = "sdu.edu.cn";
String to = request.getParameter("to");
String from = request.getParameter("from");
String cs= request.getParameter("cs");
byte[] subjectTemp= request.getParameter("subject").getBytes("ISO8859_1");
String subject=new String(subjectTemp);
byte[] messageTextTemp = request.getParameter("body").getBytes("ISO8859_1");
String messageText=new String(messageTextTemp);
boolean sessionDebug = false;
//檢測郵件地址是否合法
if ((to.trim().indexOf("@")==-1)||(to.trim().length()<5)){
%>
<jsp:forward page="Error.jsp"/>
<%}
if ((from.trim().indexOf("@")==-1)||(from.trim().length()<5)){
%>
<jsp:forward page="Error.jsp"/>
<%}
if ((cs.trim().length()>0&&cs.trim().length()<5)||((cs.trim().length()!=0)&&
(cs.trim().indexOf("@")==-1)))
{
%>
<jsp:forward page="Error.jsp"/>
<%
}
Properties props = System.getProperties();
props.put("mail.smtp.host",host);
// 如果需要身份驗證,則添加下面一行
props.put("mail.smtp.auth","true");
Session mailSession = Session.getDefaultInstance(props, null);
mailSession.setDebug(sessionDebug);
try{
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress(from));
InternetAddress[] addressTo = {new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO,addressTo);
if (cs.trim().length()!=0){
InternetAddress[] addressCc = {new InternetAddress(cs)};
msg.setRecipients(Message.RecipientType.CC,addressCc);
}
msg.setSubject(subject);
msg.setSentDate(new Date());
msg.setText(messageText);
Transport transport= mailSession.getTransport("smtp");
// 如果需要進行身份驗證,則添加下面一行
transport.connect(host,"username","password");
transport.sendMessage(msg,msg.getAllRecipients());
// 這句是必須的
transport.close();
}
catch(Exception ex){
out.println("郵件發送失敗!");
}
%>
<jsp:forward page="SendOk.jsp"/>
</BODY>
</HTML>
Error.jsp代碼如下:
<%@ page contentType="text/html;charset=gb2312" %>
<HTML>
<HEAD>
<TITLE>輸入有錯</TITLE>
</HEAD>
<BODY bgcolor=#FFCCCCC>
<CENTER>
<H4><BR>請檢查收件人、發件人和抄送人郵件地址是否正確!!<H4>
<P>
<A href="Email.htm">返回</A>
</BODY>
</HTML>
SendOk.jsp代碼如下:
<%@ page contentType="text/html;charset=gb2312" %>
<HTML>
<HEAD>
<TITLE>郵件發送成功</TITLE>
<HEAD>
<BODY bgcolor=#FFCCCCC>
<H4>
恭喜!郵件已成功發送</H4>
<Table cellspacing="2" cellpadding="2" border="1">
<tr>
<td>收信人:</td><td><%=request.getParameter("to")%></td>
</tr>
<tr>
<td>發信人:</td><td><%=request.getParameter("from")%></td>
</tr>
<tr>
<td>郵件主題:</td>
<td>
<%
byte[] subjectTemp= request.getParameter("subject").getBytes("ISO8859_1");
String subject=new String(subjectTemp);
out.println(subject);
%>
</td>
</tr>
<tr>
<td colspan="2" align=right>
<a href="Email.htm" style="color: rgb(ff,0,0)">返回</a>
</td>
</tr>
</Table>
</BODY>
</HTML>
顯示結果如下: