德尔福的Indy组件使用Gmail发送邮件不会将其发送到一些地址

问题描述:

我有问题,德尔福的RAD Studio 10.2和印组件。 它发送邮件到Gmail和Hotmail地址,但某些地址是私人服务提供者的电子邮件地址不接收任何邮件。我试过了,它没有给出任何错误消息,它只是不会将它发送到某些地址。德尔福的Indy组件使用Gmail发送邮件不会将其发送到一些地址

也许是因为我没有在我的IdMessage发件人的名字吗?我设置了发件人名称,但没有在我的邮件中显示。

我的代码是

IdMessage1.From.Name := EditNimi.Text; 
    IdMessage1.From.Text := EditNimi.Text; 
IdMessage1.From.Address := EditOsoite.Text; 

    IdMessage1.Recipients.EmailAddresses := strArray[i]; 
    temp := strArray[i]; 
    IdMessage1.Subject := EditOtsikko.Text; 
    Memo := TStringList.Create; 
    Memo.Assign(MemoViesti.Lines); 
    for o := 0 to Memo.Count-1 do 
    begin 
    IdMessage1.Body.Add(Memo.Strings[o]) 
    end; 

try 
try 
    IdSMTP1.Connect; 
    IdSMTP1.Send(IdMessage1); 
    IdMessage1.Clear; 
    Sleep(1000); 
    //IdMessage1.Free; 
except on E:Exception do begin 
    ShowMessage('Virhe lähetettäessä'); 
    ShowMessage('There was an error: ' + E.Message); 
    //StatusMemo.Lines.Insert(0, 'ERROR: ' + E.Message) ; 
end; 
end; 

终于 如果IdSMTP1.Connected然后开始 IdSMTP1.Disconnect; 结束; 结束;

+0

这不是什么导致你的问题,但你似乎是泄漏的备忘录。 – MartynA

最好的办法是你的代码工作正常,但该电子邮件服务器,而下降的传入邮件。但在此之前,与私营服务提供商调查,如果你需要SSL或任何其他安全添加到您的电子邮件服务器事先接受收到的邮件。如果您的电子邮件正通过Gmail访问,那么Gmail已经非常具体,而只需查看私人服务提供商即可。

+0

谢谢你的帮助。有很长的延迟,现在所有的消息都已收到。 – user3146414

如果TIdSMTP没有抛出一个异常,那么没有错误发生。您连接的即时SMTP服务器已同意将电子邮件发送给每个收件人,这可能涉及在当前SMTP会话结束后将电子邮件转发到其他SMTP服务器。这些转发期间的传递错误无法报告给您的SMTP代码,它们会被转发到您的发件人电子邮件的收件箱中。您需要检查收件箱是否存在传递错误。