关于IdSMTP的问题(100分)

  • 主题发起人 主题发起人 ingram
  • 开始时间 开始时间
I

ingram

Unregistered / Unconfirmed
GUEST, unregistred user!
我用INDY的IdSMTP写了一个发信的程序没次都提示错误552 CONTENE REJECT我跟踪后发现
每次在控件发送最后一条指令SendCmd('.', 250);后 就报错不知为什么
 
看看是不是服务器的问题,手工输入smtp命令看看能否发出?
telnet yoursmtpserver 25
......
. <- 看这里是不是出错。
 
不会把?
delphi安装目录/demo/indy/mailclient是一个例子,你看看能不能发
如果不能发,就是服务器的问题
如果可以发,那就是你的程序的问题
 
可能是服务器问题吧新浪可以发但亿唐不行
 
不会把?etang的免费服务器,是smtp.free.etang.com,好像是这个
但是不是smtp.etang.com
 
我跟踪到控件内部如下
procedure TIdSMTP.Send(AMsg: TIdMessage);

procedure WriteRecipient(const AEmailAddress: TIdEmailAddressItem);
begin
SendCmd('RCPT TO:<' + AEMailAddress.Address + '>', [250, 251]); {Do not Localize}
end;

procedure WriteRecipients(AList: TIdEmailAddressList);
var
i: integer;
begin
for i := 0 to AList.Count - 1 do begin
WriteRecipient(AList);
end;
end;

function NeedToAuthenticate: Boolean;
begin
if FAuthenticationType <> atNone then begin
Result := IsAuthProtocolAvailable(FAuthenticationType) and (FDidAuthenticate = False);
end else begin
Result := False;
end;
end;

begin
SendCmd('RSET'); {Do not Localize}
if NeedToAuthenticate then begin
Authenticate;
end;
SendCmd('MAIL FROM:<' + AMsg.From.Address + '>', 250); {Do not Localize}
WriteRecipients(AMsg.Recipients);
WriteRecipients(AMsg.CCList);
WriteRecipients(AMsg.BccList);
SendCmd('DATA', 354); {Do not Localize}
AMsg.ExtraHeaders.Values['X-Mailer'] := MailAgent; {Do not Localize}
SendMsg(AMsg);
SendCmd('.', 250); {Do not Localize}//前面的发送都成功就这条指令报错552 CONTENE REJECT
end;
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
911
DelphiTeacher的专栏
D
D
回复
0
查看
868
DelphiTeacher的专栏
D
S
回复
0
查看
730
SUNSTONE的Delphi笔记
S
后退
顶部