Delphi Indy组件使用gmail发送邮件,它不会将其发送到某些地址

时间:2017-09-30 16:14:47

标签: email delphi indy

我遇到Delphi RAD Studio 10.2和Indy组件的问题。 它将邮件发送到gmail和hotmail地址,但是某些地址是私人服务提供商的电子邮件地址,并没有收到任何邮件。我试过,它没有给出任何错误信息,它只是没有发送到某些地址。

也许是因为我的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;      结束;    端;

2 个答案:

答案 0 :(得分:2)

如果TIdSMTP未引发异常,则不会发生错误。您连接的直接SMTP服务器已同意将电子邮件发送给每个收件人,这可能涉及在当前SMTP会话结束后将电子邮件转发到其他SMTP服务器。这些转发期间的投放错误无法报告给您的SMTP代码,而是会将其发送到您的发件人电子邮件的收件箱中。您需要检查收件箱是否存在送货错误。

答案 1 :(得分:0)

最好的办法是,您的代码工作正常,但电子邮件服务器正在拒绝接收邮件。但在此之前,如果您需要在电子邮件中添加SSL或任何其他安全性,请调查私人服务提供商服务器事先接受传入的邮件。 Gmail已经非常具体,如果您的电子邮件是通过Gmail发送,而是查看私人服务提供商。