?? jsendmail.java
字號:
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.net.*;
public class JSendMail extends HttpServlet
{
PrintWriter outs; //定義輸出對象
static String PrintMailError; //定義書寫郵件錯誤信息
int isMailError,isSendMailError;
String FromAddress,ToAddress,CCAddress,MailServerHost; //定義相關地址變量
String EMailSubject,EmailText,MSubject_chs,MText_chs; //定義郵件內容變量
Vector CCAddressVector; //定義抄送地址對象
int k;
public void service(HttpServletRequest rq, HttpServletResponse rp)
{
/* 初始變量和對象*/
JSendMail jsendmail = new JSendMail();
PrintMailError = null;
isMailError = 0;
isSendMailError = 0;
FromAddress = null;
ToAddress = null;
MailServerHost = null;
CCAddress = null;
EMailSubject = null;
EmailText = null;
MSubject_chs = null;
MText_chs = null;
rp.setContentType("text/html");
try
{
/* 處理前臺的發送請求 */
PrintWriter outs = rp.getWriter();
FromAddress = rq.getParameter("txtfieldFrom"); //從前臺表單獲得變量值
ToAddress = rq.getParameter("txtfieldTO");
CCAddress = rq.getParameter("txtfieldCC");
MailServerHost = rq.getParameter("txtfieldHost");
EMailSubject = rq.getParameter("txtfieldSubject");
EmailText = rq.getParameter("txtfieldText");
MSubject_chs = new String(EMailSubject.getBytes("iso-8859-1")); //有效的處理中文字符集
MText_chs = new String(EmailText.getBytes("iso-8859-1"));
/* 檢查Email參數的正確性(合法性) */
isMailError = jsendmail.checkMailError(FromAddress,ToAddress,CCAddress,MailServerHost,MSubject_chs,MText_chs);
if (isMailError == 1)
{
/*
* 當isMailError=1時,表示郵件的參數存在錯誤的值。
* 將錯誤的參數名和錯誤原因反饋給客戶端。
*/
outs.println(PrintMailError);
}
else
{
/* 郵件參數正確,進行郵件的提交和轉發處理 */
try
{
isSendMailError = jsendmail.sendEMail(FromAddress,ToAddress,MailServerHost,MSubject_chs,MText_chs);
if (isSendMailError == 1)
{
/* 郵件發送完成 */
outs.println("<br><center><font size='6' color='#688eff' face='方正姚體'>你的郵件已經成功發送!</font></center>");
}
else
{
/* 郵件發送未完成 */
outs.println("<br><font size='5' color='#FF66CC' face='方正姚體'>你的郵件沒有被成功發送,其原因可能是你所填寫的收件人郵箱地址或Mail服務器地址有錯誤。請重新檢查一下所填寫的郵件地址,謝謝!</font>");
}
}
catch(Exception e)
{
/* 處理在郵件發送時遇到的例外 */
outs.println("<br><font size='5' color='#FF66CC' face='方正姚體'>你的郵件沒有被成功發送,其原因可能是你所填寫的收件人郵箱地址或Mail服務器地址有錯誤。請重新檢查一下所填寫的郵件地址,謝謝!</font>");
}
if (CCAddress != null && CCAddress.length() > 1)
{
try
{
/* 處理多個收信人的郵件轉發 */
CCAddressVector = new Vector(2,2);
CCAddressVector = jsendmail.cutCCMailAddress(CCAddress);
for(int j = 0;j < CCAddressVector.size();j++)
{
ToAddress = CCAddressVector.elementAt(j).toString().trim();
isSendMailError = jsendmail.sendEMail(FromAddress,ToAddress,MailServerHost,MSubject_chs,MText_chs);
}
if (isSendMailError == 1)
{
/* 郵件轉發完成 */
outs.println("<br><br><center><font size='6' color='#688eff' face='方正姚體'>你的郵件已經成功轉發!</font></center>");
}
else
{
/* 郵件轉發未完成 */
outs.println("<br><br><font size='5' color='#FF66CC' face='方正姚體'>你的郵件沒有被成功轉發,其原因可能是你所填寫的收件人郵箱地址或Mail服務器地址有錯誤。請重新檢查一下所填寫的郵件地址,謝謝!</font>");
}
}
catch(Exception e)
{
System.out.println("!1 程序出現了例外:" + e.toString());
}
}
}
}
catch (Exception e)
{
System.out.println("!2 程序出現了例外:" + e.toString());
}
}
public int checkMailError(String cme_FromAddress,String cme_ToAddress,String cme_CCAddress,String cme_MailServerHost,String cme_MSubject_chs,String cme_MText_chs)
{
/* 這是一個檢驗Email參數完整性的方法(函數) */
int i = 0;
PrintMailError = "<center>系統發現你所提交的Email發送請求中含有以下的錯誤:</center>";
if (cme_FromAddress == null || cme_FromAddress.length() < 1 || (cme_FromAddress.indexOf("@") == -1))
{
/* 參數不正確 */
i = 1;
PrintMailError = PrintMailError + "<br><center>(1) 發件人的郵箱地址為空或格式不正確;</center>";
}
if (cme_ToAddress == null || cme_ToAddress.length() < 1 || (cme_ToAddress.indexOf("@") == -1))
{
i = 1;
PrintMailError = PrintMailError + "<br><center>(2) 收件人的郵箱地址為空或格式不正確;</center>";
}
if (cme_CCAddress != null && cme_CCAddress.length() > 1)
{
if (cme_CCAddress.indexOf("@") == -1)
{
i = 1;
PrintMailError = PrintMailError + "<br><center>(3) 抄送人的郵箱地址為空或格式不正確;</center>";
}
}
if (cme_MailServerHost == null || cme_MailServerHost.length() < 1 || (cme_MailServerHost.indexOf(".") == -1))
{
i = 1;
PrintMailError = PrintMailError + "<br><center>(4) 郵件服務器的地址為空或格式不正確;</center>";
}
if ((cme_MSubject_chs == null || cme_MSubject_chs.length() < 1) && (cme_MText_chs == null || cme_MText_chs.length() < 1))
{
i = 1;
PrintMailError = PrintMailError + "<br><center>(5) 郵件的主題和內容不可以同時為空;</center>";
}
return i;
}
public Vector cutCCMailAddress(String cma_CCAddress)
{
/* 這是一個獲取多個Email轉發地址的方法(函數) */
Vector cutAddress = new Vector(2,2);
StringTokenizer st = new StringTokenizer(cma_CCAddress,",");
String v = null;
int i = 0;
int j = 0;
int k = 0;
for (i = 0;i < cma_CCAddress.length();i++)
{
/* 判斷轉發地址的個數 */
j++;
v = cma_CCAddress.substring(i,j);
if(v.equals(","))
{
k++;
}
}
for(i = 0;i <= k;i++)
{
/* 以逗號為分隔符,將字符串分隔為若干個子字符串 */
v = st.nextToken();
if (v != null && v.length() > 1)
{
cutAddress.addElement(v.trim());
}
}
return cutAddress;
}
public int sendEMail(String sem_FromAddress,String sem_ToAddress,String sem_MailServerHost,String sem_MSubject_chs,String sem_MText_chs)
{
/* 這是一個發送郵件的方法(函數) */
int i;
try
{
Socket s = new Socket(sem_MailServerHost, 25);
PrintStream out = new PrintStream(s.getOutputStream());
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
out.println("HELO " + "aaa");
in.readLine();
out.println("MAIL FROM: " + sem_FromAddress);
in.readLine();
out.println("RCPT TO: " + sem_ToAddress);
in.readLine();
out.println("DATA");
out.println("Subject:" + sem_MSubject_chs);
out.println("\n");
in.readLine();
out.println(sem_MText_chs);
in.readLine();
out.println(".\n");
in.readLine();
out.println("QUIT");
i = 1;
}
catch(Exception e)
{
i = 0;
System.out.println("!3 程序出現了例外:" + e.toString());
}
return i;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -