请帮忙看看下列程序:执行没问题,但邮箱中确没有邮件??(200分)

Z

zhx_888

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var
LSMTP: TIdSMTP;
LSMG: TidMessage;
begin
Memo1.Lines :=Getips();
Lsmtp:=TidSmtp.Create(Nil);
LSMTP.Host :=SMTPHOST;
Memo2.Lines.Clear ;
memo2.Lines.Add ('连接到服务器:'+LSMTP.Host );
LSMTP.Connect();
IF LSMTP.Connected THEN
begin
memo2.Lines.Add ('已经连接到服务器');
memo2.Lines.Add(LSMTP.AuthSchemesSupported.GetText );
IF (LSMTP.AuthSchemesSupported.IndexOf ( 'LOGIN' ) <> -1) THEN
BEGIN
Memo2.lines.add('服务器要求身份验证');
LSMTP.Username :=USELOGINNAME;
lsmtp.Password :=USEPASSWORD;
lsmtp.AuthenticationType :=atlogin;
Memo2.lines.add('开始身份验证');
IF lsmtp.Authenticate THEN
Memo2.lines.add('身份验证通过')
else
begin
Memo2.lines.add('身份验证失败!');
lsmtp.Disconnect ;
Memo2.lines.add('连接已断开!');
end;
MEMO2.Lines.AddStrings(LSMTP.LastCmdResult.Text );
END;
IF LSMTP.Connected THEN
BEGIN {开始发邮件}
Memo2.lines.add('开始发送邮件!');
LSmG:=TidMessage.Create(LSMTP);
LSMG.Subject :='IP Address :'+GetIPs().GetText ;
LSMG.From.Address :=USEADDRESS;
LSMG.From.Name :=USENAME;
LSMG.ReceiptRecipient.Address :=TOADDRESS;
LSMG.Date :=NOW;
LSMG.Priority :=MPHIGH;
LSMTP.SendMsg(LSMG,True);
LSMTP.Disconnect ;
Memo2.lines.add('连接已断开!');
lsmg.Destroy ;
END
else
Memo2.lines.add('连接失败!');
end;
lsmtp.Destroy ;
end;
注:GETIPS()过程用于获取本机IP放到 MEMO1 框中
MEMO2框显示信息
 
首先确信LSMTP.SendMsg(LSMG,True);这一步执行成功,还有就是多试几个邮箱,好象某些免费
邮箱不能收Indy发的邮件。
 
下面是MEMO2的信息:我从21CN发到163或21CN发到21CN等
连接到服务器:SMTP.21CN.COM
已经连接到服务器

LOGIN

服务器要求身份验证
开始身份验证
身份验证通过
authenticated
开始发送邮件!
连接已断开!
 
阅读程序没有发现明显的错误
等我拿去调试一下,给你答复
 
谢谢各位,这个问题我已经解决了!
 
谢谢各位,这个问题我已经解决了!
 
谢谢各位,这个问题我已经解决了!
 
怎么解决的呀?
你好象一直再问这问题,呵呵
抛出多少分了?
全部搞定了?
你有没有使用IDPop3?
indy的代码还有点问题,标题(subject)会乱码
修改一下源代码,
IdCoderHeader.pas中的DecodeHeader函数(或者直接搜索字符串=?ISO),
在检查过ISO和WINDOWS之后检查GB2312,即加入如下一句:
if encodingstartpos = 0 then
encodingstartpos:=PosStartAt('=?GB2312', UpperCase(Header),1);
还有在下面的While语句的最后,也加上这样一句
 
接受答案了.
 
顶部