📄 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 + -