以上部分程序完成了显示邮件服务器邮件列表的功能。接下来,再增加一
个路径为/MailList的动作项,它的功能是显示指定的邮件内容。
void __fastcall TWebModule1::WebModule1WebActionItem2Action(
TObject *Sender, TWebRequest *Request, TWebResponse *Response,
bool &Handled)
{
//接受HTTP请求传递的参数,从中获取用户名和口令、欲查看的邮件序号
URLData = NULL;
switch(Request->MethodType)
{case mtPost:
URLData = Request->ContentFields;
break;
case mtGet:
URLData = Request->QueryFields;
break;}
EmailOrder = StrToInt(URLData->Values["Mx"]);
//下面开始连接邮件服务器
NMPOP31->AttachFilePath=".";//存储邮件路径为当前路径
NMPOP31->DeleteOnRead=false;//不删除服务器上的副本
NMPOP31->ReportLevel=Status_Basic;//Status的详细程度
NMPOP31->TimeOut=20000; //设定超时
NMPOP31->Host=HostName;
NMPOP31->Port=StrToInt(HostPort);
NMPOP31->UserID=UserName;
NMPOP31->Password=UserCode;
ConnectFlag=true;
NMPOP31->Connect();
//如果连接成功,打开指定的邮件
if(ConnectFlag)
{PageProducer1->HTMLDoc->Clear();
PageProducer1->HTMLDoc->Add("<html><body>");
PageProducer1->HTMLDoc->Add("第"+ IntToStr(EmailOrder)+ "个邮件内容:");
NMPOP31->GetMailMessage(EmailOrder);
PageProducer1->HTMLDoc->AddStrings(NMPOP31->MailMessage->Head);
PageProducer1->HTMLDoc->AddStrings(NMPOP31->MailMessage->Body);
PageProducer1->HTMLDoc->Add("</body></html>");
NMPOP31->Disconnect(); }
else
{PageProducer1->HTMLDoc->Clear();
PageProducer1->HTMLDoc->Add("<html><body>");
PageProducer1->HTMLDoc->Add("连接服务器失败!");
PageProducer1->HTMLDoc->Add("</body></html>");}
//将显示指定邮件内容的HTML语句发送给浏览器
Response->Content = PageProducer1->Content( );
}
//------------------------------------------------------------
最后在NMPOP31的ConnectionFailed事件中加入:
void __fastcall TWebModule1::NMPOP31ConnectionFailed(TObject *Sender)
{
ConnectFlag=false;
}
//------------------------------------------------------------
更多内容请看PCdog.com--垃圾邮件专题
