【发布时间】:2013-01-24 11:21:53
【问题描述】:
我想用delphi发送一些电子邮件,我有这个小代码:
procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
begin
IdMsgSend := TIdMessage.Create(nil);
SSLHandler :=TIdSSLIOHandlerSocketOpenSSL.Create(nil);
try
with IdMsgSend do
begin
ContentType := 'text/plain';
Body.Text := 'Test test text';
From.Text := 'USERNAME@gmail.com';
ReplyTo.EMailAddresses := 'Recipient@server.com';
Recipients.EMailAddresses := 'Recipient@server.com';
Subject := 'i just came to say hello';
end;
SMTP := TIdSMTP.Create(nil);
try
SMTP.Username := 'USERNAME@gmail.com';
SMTP.Password := 'PASSWODD';
SMTP.Host := 'smtp.gmail.com';
SMTP.Port := 465;
SMTP.IOHandler := SSLHandler;
SSLHandler.SSLOptions.Method := sslvSSLv3;
SMTP.UseTLS := utUseExplicitTLS;
SMTP.Connect;
try
IdMsgSend.Body.Text := 'The body';
IdMsgSend.Subject := 'The subject';
SMTP.Send(IdMsgSend);
finally
SMTP.Disconnect;
end;
finally
FreeAndNil(SMTP);
end;
finally
FreeAndNil(IdMsgSend);
end;
end;
它曾经工作得很好!现在,每次我尝试发送电子邮件时,我都会在SMTP.Send(IdMsgSend) 收到此错误:
连接正常关闭
我读到它可能来自防病毒或防火墙,所以我将它们都禁用了,但还是同样的问题?
这里有什么问题? gmail 是否更改了它的 SMTP 选项或类似的东西?
【问题讨论】:
-
@jachguate 我说我禁用了防病毒软件和防火墙,所以没有任何阻塞,+ 我测试了 gmail 和 hotmail 所以它不是服务器问题
-
我没有说有什么东西在阻塞,它只是看起来是同一个问题。由于服务器防病毒或其他反垃圾邮件措施,服务器可能正在关闭连接。你记录传输了吗?它总是在同一时间关闭?你有另一台计算机来比较结果吗?
-
@jachguate 我说因为我已经读过那个问题,他们就是这么回答的:/,不,我没有记录传输,是的,它总是在同一点关闭,不,我没有另一个电脑
-
记录它,你只有在检查不同运行的日志后才能知道它是否在同一点关闭。
-
@yassine 您可以使用 TIdLogFile 并将其附加到您的 TIdSMTP.Intercept 属性,以将客户端/服务器对话记录到应用程序内部的文件中。或者您可以使用 Wireshark 或其他嗅探工具在机器级别执行此操作。