社区
通信技术
帖子详情
在OutLook中收取POP3的邮件时,RETR命令以什么作为结束符
kittywu
2004-06-11 11:27:10
本人在做一个SMTP,POP3的服务器时,用FoxMail收发均没问题,但是用OutLook Express 收取邮件时,收到RETR 命令时,却一直在等待服务器回应,我看了一下,应该是服务器对RETR命令返回的字符串没有结束符(有\r\n.\r\n),是不是OutLook用另外的字符作为RETR响应的结束符??
...全文
413
3
打赏
收藏
在OutLook中收取POP3的邮件时,RETR命令以什么作为结束符
本人在做一个SMTP,POP3的服务器时,用FoxMail收发均没问题,但是用OutLook Express 收取邮件时,收到RETR 命令时,却一直在等待服务器回应,我看了一下,应该是服务器对RETR命令返回的字符串没有结束符(有\r\n.\r\n),是不是OutLook用另外的字符作为RETR响应的结束符??
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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)
谢谢!
POP3
邮件
接收协议
命令
使用详解
第1章
POP3
概述
POP3
全称为Post Office Protocol version3,即邮局协议第3版。它被用户代理用来
邮件
服务器取得
邮件
。
POP3
采用的也是C/S通信模型,对应的RFC文档为RFC1939。该协议非常简单,所以我们只重点介绍其...
PHP实现
pop3
,用PHP实现
POP3
邮件
的
收取
(二)
用php实现
POP3
收取
邮件
的类现在让我们来用PHP实现一个通过
POP3
协议
收取
信件的类吧,这个类
中
所用到的一些sock操作的函数,不另做特殊说明,请参考php的有关资料。通过这个实例,相信你也会和我一样,感觉到PHP
中
对于...
POP3
协议详解
POP3
是一种用于从
邮件
服务器获取电子
邮件
的协议。它允许
邮件
客户端连接到
邮件
服务器,检索服务器上存储的
邮件
,并将
邮件
下载到客户端设备上。
邮件
服务器之
POP3
协议分析
它被用户代理用来
邮件
服务器取得
邮件
。
POP3
采用的也是C/S通信 模型,对应的RFC文 档为RFC1939。 该协议非常简单,所以我们只重点介绍其通信过程,而相关的一些概念和术语请参考RFC文档或另外一篇文章《SMTP协议分析...
邮件
服务器全面实现SMTP、
POP3
、IMAP及WebMail技术
简介:
邮件
服务器是处理电子...SMTP处理
邮件
发送,
POP3
和IMAP分别用于
邮件
下载和管理,WebMail则允许用户通过浏览器访问
邮件
。本文还提到了
邮件
服务器开发相关的文件和组件,为开发者提供了深入理解
邮件
服务...
通信技术
4,386
社区成员
28,916
社区内容
发帖
与我相关
我的任务
通信技术
通信技术相关讨论
复制链接
扫一扫
分享
社区描述
通信技术相关讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章