BCB 6 中的 Indy 10 TIdSMTP 消息传递

问题描述

在使用 Borland C++Builder 6 开发的应用程序中,我使用 TIdSMTPTIdMessage 发送电子邮件。由于配置中常用邮件服务器的外部应用程序存在问题,我通过我的 Gmail 帐户定义连接数据如下:

Correo->From->Address           = "******@******.org";
Correo->ReplyTo->EMailAddresses = "******@******.org";
Correo->From->Name              = "*******";
Correo->Organization            = "*******";

Enviar->Host     = "smtp.gmail.com";
Enviar->Password = "******";
Enviar->Port     = 465;
Enviar->Username = "******@gmail.com";
Enviar->UseTLS   = utUseImplicitTLS;

SSLIOHandler->Port               = 465;
SSLIOHandler->Host               = "smtp.gmail.com";
SSLIOHandler->Destination        = "smtp.gmail.com:" + IntToStr(SSLIOHandler->Port);
SSLIOHandler->SSLOptions->Method = sslvTLSv1_2;
SSLIOHandler->SSLOptions->Mode   = sslmUnassigned;

电子邮件发送没有任何问题,但除了我发送到我的 Gmail 地址的副本之外,我还在检查这些。我已确认 Gmail 地址出现在 Return-Path 字段的邮件标题中。

我一直在寻找,至少在 BCB 6 的 Indy 10 中,我还没有找到如何修改该字段。我如何才能获得副本以仅到达 ReplyToTIdMessage 字段中指定的地址?

解决方法

TIdMessage.ReplyTo 属性对 Return-Path 标头没有影响。 ReplyTo 仅用于 Reply-To 标头,收件人使用该标头回复发件人。接收 SMTP 服务器根本不使用 Reply-To 标头。

Return-Path 标头由接收 SMTP 服务器使用发送客户端的 SMTP MAIL FROM 命令中指定的地址生成。您可以在 TIdMessage.SenderTIdMessage.From 属性中(按该顺序)指定该地址,或者使用其他具有 TIdSMTP.Send() 参数的重载 AFrom 方法之一。