利用JavaMail API實現發送E-mail的功能

首先,介紹一下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="發送">
&nbsp&nbsp&nbsp&nbsp <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>

顯示結果如下:








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章