社区
通信技术
帖子详情
在OutLook中收取POP3的邮件时,RETR命令以什么作为结束符
kittywu
2004-06-11 11:27:10
本人在做一个SMTP,POP3的服务器时,用FoxMail收发均没问题,但是用OutLook Express 收取邮件时,收到RETR 命令时,却一直在等待服务器回应,我看了一下,应该是服务器对RETR命令返回的字符串没有结束符(有\r\n.\r\n),是不是OutLook用另外的字符作为RETR响应的结束符??
...全文
463
3
打赏
收藏
在OutLook中收取POP3的邮件时,RETR命令以什么作为结束符
本人在做一个SMTP,POP3的服务器时,用FoxMail收发均没问题,但是用OutLook Express 收取邮件时,收到RETR 命令时,却一直在等待服务器回应,我看了一下,应该是服务器对RETR命令返回的字符串没有结束符(有\r\n.\r\n),是不是OutLook用另外的字符作为RETR响应的结束符??
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xhzxlqt
2004-06-12
打赏
举报
回复
你说的问题我最初也遇到过,已经解决,现将POP3的代码贴上来:
if(rectxt.SubString(1,4).UpperCase()=="RETR")
{
if(ipop3status<2)
{
sendtxt="-ERR authentication required.\r\n";
try
{
pStream->WriteBuffer(sendtxt.c_str(),sendtxt.Length());
}
catch(...)
{
Terminate();
}
}
else
{
sPara=rectxt.SubString(6,rectxt.Length()-7);
int no=StrToInt(sPara)-iDeleted;
TSearchRec sr;
int iAttributes = 0;
iAttributes |= faAnyFile;
int messagenumber=0;
long messagebyte=0;
FILE *popfp;
int lfilelen,ifread;
AnsiString str,str1;
if (FindFirst(mailpath+Domain+"\\"+Name+"\\*.mal", iAttributes, sr) == 0)
{
do
{
if (sr.Name.SubString(1,1)!=".")
{
messagenumber++;
if(messagenumber==no)
{
int ifilesize=sr.Size;
sPOPFilename=mailpath+Domain+"\\"+Name+"\\"+sr.Name;
popfp=fopen((mailpath+Domain+"\\"+Name+"\\"+sr.Name).c_str(),"rt");
if(popfp)
{
sendtxt="+OK "+IntToStr(sr.Size)+" octets\r\n";
try
{
pStream->WriteBuffer(sendtxt.c_str(),sendtxt.Length());
}
catch(...)
{
Terminate();
}
// while(!feof(popfp))
while(ifilesize)
{
// fgets(ch,513,popfp);
char ch[513];
ZeroMemory(ch,513);
if(ifilesize<=513)
{
fread((char*)ch,ifilesize,1,popfp);
str=AnsiString(ch).SubString(1,ifilesize);
ifilesize=0;
}
if(ifilesize>513)
{
fread((char*)ch,513,1,popfp);
str=AnsiString(ch).SubString(1,513);
ifilesize-=513;
}
str1=str;
if((str.SubString(str.Length()-1,1)=="=")&&(str.SubString(str.Length()-2,1)!="?"))
{
str1=str.SubString(1,str.Length()-2);
}
sendtxt=str1;
try
{
pStream->WriteBuffer(sendtxt.c_str(),sendtxt.Length());
}
catch(...)
{
Terminate();
}
}
sendtxt="\r\n.\r\n";
try
{
pStream->WriteBuffer(sendtxt.c_str(),sendtxt.Length());
}
catch(...)
{
Terminate();
}
if(popfp)
fclose(popfp);
break;
}
}
}
} while (FindNext(sr) == 0);
FindClose(sr);
}
}
}
kittywu
2004-06-12
打赏
举报
回复
“当你将邮件内容发送完成后,再发送一个"\r\n.\r\n";在FoxMail和OutLook Express中我都试过,没有问题”
你说的方法我试过了,在FoxMail中可以通过,但不知为何,OutLook Express一直在等待接收数据,而不结束,很奇怪的?
我昨晚就在想这个问题,我想应该可以通过自身的SMTP服务器发到另外的服务器上,如果解决了,给你email!
xhzxlqt
2004-06-11
打赏
举报
回复
当你将邮件内容发送完成后,再发送一个"\r\n.\r\n";
在FoxMail和OutLook Express中我都试过,没有问题.
我也在搞这个东西.
我也有一个问题不知楼主是否能帮我解决:邮件服务器如何与别的邮件服务器交换邮件?比如说用"xyz@112.com"发送到"abc@223.com" ,112.com上的邮件服务器如何将本地的这封邮件发送到223.com上的邮件服务器?(可不要建议到223.com上去申请一个免费邮箱)
这个问题我想你早晚也会遇到,如果已经(或以后)解决请告诉我如何解决(xhzxlqt@163.com,xhzxlqt@126.com)
谢谢!
[转]详细介绍java
中
的数据结构
详细介绍java
中
的数据结构 本文介绍的是java
中
的数据结构,本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类。一起来看本文吧! 也许你已经熟练使用了java.util包里面的各种数据结构,但是我还是要说一说java版数据结构与算法,希望对你有帮助。 线性表,链表,哈希表是常用的数据结构,在进行Java开发
时
,JDK已经为我们提供...
详细介绍java
中
的数据结构
详细介绍java
中
的数据结构 http://developer.51cto.com/art/201107/273003.htm 本文介绍的是java
中
的数据结构,本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类。一起来看本文吧! AD:51CTO 网+ 第十二期沙龙:大话数据之美_如何用数据驱动用户体验 也许你已经熟练使用了java.ut...
通信技术
4,397
社区成员
28,909
社区内容
发帖
与我相关
我的任务
通信技术
通信技术相关讨论
复制链接
扫一扫
分享
社区描述
通信技术相关讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章