转发保留收件人的电子邮件(INDY 和 Delphi)

Forward Emails preserving recipients (INDY and Delphi)

我使用 TIdIMAP4 对象从 GMail 帐户检索电子邮件,并希望使用 TIdSMTP 将它们转发到另一个 (GMail-) 帐户,同时保留原始收件人列表。

我的方法是将目标地址添加为密件抄送以使其在目标中不可见,但是如何防止 SMTP 组件将其发送给列表中的所有其他收件人?然后他们会两次收到所有转发的邮件。

更新 1: 我没有使用 BCC,而是在发送语句中提供了目标地址

smtp.Send(msg,destination);

但邮件仍会发送给所有其他收件人。

默认情况下,TIdSMTP.Send() 会将电子邮件发送给 TIdMessageRecipientsCcListBccList 属性中列出的所有收件人。

当您通过 POP3 或 IMAP 将电子邮件下载到 TIdMessage 时,RecipientsCcList(但不是 BccList)将从电子邮件的现有 ToCC headers。

当您转发邮件时,如果您不想将邮件发送给邮件中指定的收件人,那么您可以调用 TIdSMTP.Send() 的重载版本,以收件人列表作为参数.这只会将电子邮件发送到该列表。例如:

var
  forwardTo: TIdEmailAddressList;
begin
  ...
  forwardTo := TIdEmailAddressList.Create;
  try
    // add desired recipients to forwardTo as needed, then...
    smtp.Send(msg, forwardTo);
  finally
    forwardTo.Free;
  end;
  ...
end;