请帮忙调试、修改一段代码

问题描述

因为本人对VC.net不熟悉,此段代码在VC.net2005环境下错误太多,请熟悉VC.net编程的朋友帮忙。#pragmaonce#include"stdafx.h"#using<mscorlib.dll>#using<System.dll>usingnamespaceSystem;usingnamespaceSystem::IO;usingnamespaceSystem::Net;usingnamespaceSystem::Net::Sockets;usingnamespaceSystem::ComponentModel;usingnamespaceSystem::Collections;usingnamespaceSystem::Diagnostics;namespaceMailServer{///<summary>///SMTPProcessor摘要///SMTP协议负责电子邮件的上传。具体分为客户端对服务器的上传,服务器对服务器间的局间上传///SMTP是请求/响应协议,命令和响应都是基于ASCII文本,并以CR和LF符号结束。响应包括一个表示返回状态的三位数字代码///SMTP在TCP协议25号端口监听连接请求//////连接和发送过程//1.建立TCP连接//2.客户端发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令。服务器端以OK作为响应,表明准备接受。//3.客户端发送RCPT命令,以标识该电子邮件的计划接收者,可以有多个RCPT行。服务器端则表示是否愿意为收件人接收电子邮件。//4.协商结束,发送电子邮件,用命令DATA发送。//5.以"."表示结束输入内容一起发送出去。//6.结束此次发送,用QUIT命令退出。///</summary>publicrefclassSMTPProcessor:publicSystem::ComponentModel::Component{public://构造函数SMTPProcessor(Socket*_socket){//:socket(NULL)//,quitRequested(false)//,isDataPartStarted(false)//InitializeComponent();socket=_socket;quitRequested=false;isDataPartStarted=false;messageID=System::Guid::NewGuid();//为文件生成全局唯一标识符}SMTPProcessor(System::ComponentModel::IContainer^container){///<summary>///Windows.Forms类撰写设计器支持所必需的///</summary>container->Add(this);InitializeComponent();}protected:///<summary>///清理所有正在使用的资源。///</summary>~SMTPProcessor(){if(components){deletecomponents;}}private:///<summary>///必需的设计器变量。///</summary>Socket*socket;//判断客户端是否释放连接boolquitRequested;//判断客户端数据部分是否开始boolisDataPartStarted;//用于生成文件名GuidmessageID;//对客户端的命令进行处理voidProcess(void){String*ClientMessage=String::Empty;//接受客户端信息String*ServerMessage=String::Empty;//服务器输出信息boolfirst=true;String*welcome=String::Concat(S"220",System::Environment::MachineName,S"SMTPservicereadyat",DateTime::Now.ToString());String*filePath=String::Concat(S"\",messageID.ToString(),S".txt");String*mailFrom=String::Empty;String*mailTo=String::Empty;if(!File::Exists(filePath)){//用此变量向文件写入邮件内容StreamWriter*streamWriterFile=File::CreateText(filePath);try{while(!quitRequested){//建立NetworkStreamNetworkStream*networkStream=newNetworkStream(socket);//建立StreamReader,读取客户端输入信息StreamReader*streamReader=newStreamReader(networkStream);//建立StreamWriter,写出服务器将要发出的信息StreamWriter*streamWriter=newStreamWriter(networkStream);streamWriter->AutoFlush=True;if(first==True){//如果刚刚建立连接,则输出welcome的内容streamWriter->WriteLine(welcome);first=false;}clientMessage=streamReader->ReadLine();//读取客户端信息Console::WriteLine(clientMessage);//处理客户端命令if(clientMessage->ToUpper()->StartsWith("HELO"));{//客户端命令:HELOserverMessage=String::Concat(S"250",System::Environment::MachineName,S"saysHelloto[");serverMessage=String::Concat(serverMessage,Dns::Resolve(System::Environment::MachineName)->AddressList[0]->ToString(),S"]");}//HELOelseif(clientMessage->ToUpper()->StartsWith("MAILFROM:")){//客户端命令:MAILFROMmailFrom=clientMessage->Substring(clientMessage->indexOf(":")+1)->Trim();//从命令中提取发信人邮箱地址mailFrom=mailFrom->Remove(0,1);mailFrom=mailFrom->Substringe(0,mailFrom->Length-1);streamWriterFile->WriteLine(String::Concat(S"mailfrom:",mailFrom);serverMessage=String::Concat(S"250",S"SenderOK");}//MAILFROMelseif(clientMessage->ToUpper()->StartsWith("RCPTTO:")){//客户端命令:RCPTTOmailTo=clientMessage->Substring(clientMessage->IndexOf(S":")+1)->Trim();mailTo=mailTo->Remove(0,1);mailTo=mailTo->Substring(0,mailTo->Length-1);streamWriterFile->WriterLine(String::Concat(S"mailto:",mailTo));serverMessage=String::Concat(S"250",S"recipentOK");}//RCPTTOelseif(clientMessage->ToUpper()->Equals("DATA")){//客户端命令:DATAisDataPartStarted=true;//数据部分开始标志serverMessage="354PleaseStartmailinput;endwith<CRLF>.<CRLF>";}//DATAelseif(isDataPartStarted){//如果数据部分开始while(true){//读取数据直至读到"."//将读取的数据部分写入文件streamWriterFile->WriterLine(clientMessage);serverMessage=String::Empty;//服务器不发送命令if(clientMessage->Equals(".")){//如果读取的内容为".",表示数据部分已经结束//数据开始部分的标志置为falseisDataPartStarted=false;serverMessage=S"250messageaccepted.";break;//跳出循环}//读取数据内容clientMessage=streamReader->ReadLine();Console::WriteLine(clientMessage);}}elseif(clientMessage->ToUpper()->Equals("QUIT")){//客户端命令:QUITserverMessage="221Closingconnection.GoodBye!";quitRequested=true;}elseserverMessage="500Commandunrecognized.";//命令处理完成if(serverMessage!="")streamWriter->WriterLine(serverMessage);}}_finally{//关闭写入文件的streamWriterif(streamWriterFile)_try_cast<IDisposable*>(streamWriterFile)->Dispose();}}}};}

解决方案

解决方案二:
你应该将整个工程打包发上来,否则就这样一段代码,还要自己新建工程,配置环境,太麻烦了!P.S.打包之前最好把/Debug和/Release下的文件都删除,然后添加上所需的lib文件或其他必需的文件。方便他人==方便自己!!!
解决方案三:
如果你的邮件服务需要验证.这样编写SMTP.是不可以的.

时间: 2024-08-31 05:26:24

请帮忙调试、修改一段代码的相关文章

c语言-请帮忙运行一下这段C代码,请教一下为什么会出现这种现象,帮忙分析一下缺陷

问题描述 请帮忙运行一下这段C代码,请教一下为什么会出现这种现象,帮忙分析一下缺陷 /*编写一个程序,该程序要求用户输入一个华氏温度.程序以double类型读入温度值,并将它作为一个参数传递给用户提供的函数Temperatures().该函数将计算相应的摄氏温度和绝对温度,并以小数点右边有两位数字的精度显示这三种温度.它应该用每个值所代表的温度刻度来标识这3个值.下面是将华氏温度转换成摄氏温度的方程: 通常用在科学上的绝对温度的刻度是0代表绝对零,是可能温度的下界.下面是将摄氏温度转换为绝对温度

r语言-请大家看看我这段代码有啥问题,为什么会提示“更换参数长度为零”?

问题描述 请大家看看我这段代码有啥问题,为什么会提示"更换参数长度为零"? pse=rep(0,Iter) psa=rep(0,Iter) for (j in c(1:Iter)) { P=rep(0, T) for (i in c(1:T)) { n=rnorm(1,0,1) temp = exp(r-0.5*(s)^2 + s*n) if(i>=2) P= P[i-1] * temp if(i==1) P=initPrice*temp } pse[j]=P[T] psa[j]

java后台逻辑问题-求大神帮忙解释下这段代码。

问题描述 求大神帮忙解释下这段代码. 这是一个从表添加页面的代码.currentx是当前页数.我想问下 st st1 st2 st3是什么意思,就是split(:):这个方法我不是很清楚什么意思,还有下面的!ss.equals("t") t是什么. 传参什么的我晓得. @RequestMapping("/addProcess.do") public String addProcessMaintenance(String currentx, String ids, S

算法-大家帮忙看看我这段代码逻辑是不是有问题?

问题描述 大家帮忙看看我这段代码逻辑是不是有问题? #include "stdafx.h" #include "KNN.h" #include #include #include #include //设置K值 void KNN::setK() { // cout << "请输入K:"; // cin >> K; } //读入训练集数据,100组数据,108维,10类 bool KNN::ReadTraining(char

c++ 编程问题-请高人指点一下这段代码的执行过程,不胜感激

问题描述 请高人指点一下这段代码的执行过程,不胜感激 请您帮忙分析一下以下代码的执行过程,在下在编译器上跑了一遍,可还是不太明白,希望能得到您的详尽的解释,谢谢! #include using namespace std; class Shape { public: Shape(){} virtual ~Shape() {} virtual float Area() const=0; virtual Shape * Clone() const=0; }; class Circle:public

帮忙看下这段代码,为啥那个afafafa没有打印出来?

问题描述 帮忙看下这段代码,为啥那个afafafa没有打印出来? public class Demoe { public void f() { System.out.println("Throwing MyException from f()"); } public static void main(String[] args) { Demoe aa = null; try { aa.f(); throw new NullPointerException("afafafa&q

语言-新手求帮忙看下这段代码的数据溢出问题,没有C币理解下(我是在CodeBlock10.05下运行的)

问题描述 新手求帮忙看下这段代码的数据溢出问题,没有C币理解下(我是在CodeBlock10.05下运行的) #include #include #include unsigned int Ex_secret[30]={11,4,120,75,170,204,90,59,78,49,//用0~255的数表示8位2进制,一共240位 148,248,190,137,0,9,17,91,174,105,45,124,177,205,57,97,194,155,120,36}; unsigned in

信息-请帮我看看这段代码有什么问题,提示查询语句出错。

问题描述 请帮我看看这段代码有什么问题,提示查询语句出错. <% set rs=server.CreateObject("ADODB.Recordset") dim temp ,I dim posid,posname, branch, manager, checktime,bz,mainpic,checkpic,checkquarter,group temp=request.Form("input") select case request.Form(&quo

redirect-求大神帮忙解释下面这段代码,尤其是问号后边的,谢谢啦

问题描述 求大神帮忙解释下面这段代码,尤其是问号后边的,谢谢啦 求大神帮忙解释下面这段代码,尤其是问号后边的,谢谢啦 <result type="redirect" name="success">/Module/QuZhengGuiZe/List.action?pageLink=${pager.pageLinkUrl}</result> 解决方案 返回结果为success url地址重定向( type="redirect"

在指定的时间段清除定时器,大家帮忙看一下这段代码有什么问题?

问题描述 在指定的时间段清除定时器,大家帮忙看一下这段代码有什么问题? <script type='text/javascript'> var date_time = new Date(); var current_time = date_time.getHours() + ":" + date_time.getMinutes() + ":" + date_time.getSeconds(); if (current_time >= '7:20:0