2

次のコードを使用して、INDY10コンポーネントを含むEメールを送信しています。

  try
    MyNewIndyMessage.From.Address := edFrom.Text;
    MyNewIndyMessage.Recipients.EMailAddresses := edTo.Text;
    MyNewIndyMessage.CCList.EMailAddresses := edCC.Text;
    MyNewIndyMessage.BCCList.EMailAddresses := edBCC.Text;
    MyNewIndyMessage.Subject := edSubject.Text;
    MyNewIndyMessage.Body := edContent.Lines;
    MyIndySMTP.Send(MyNewIndyMessage);
  finally
    MyIndySMTP.Disconnect;
  end;

Indy smtpは、Message.from.addressに「myname@companyX.com」のような有効な組織を入力するように要求します。ここに入力したいのですが、「このメールは緊急に読む必要があります」のような調停文字列です。INDY SMTPコンポーネントで行われたそのようなチェックをバイパスできますか?

4

1 に答える 1

5

Internet Message Format 仕様 (RFC 2822) によると、From フィールドには有効なメールボックスが含まれている必要があります。通常は次のとおりです (セクション 3.4)。

通常、メールボックスは次の 2 つの部分で構成されます。(1) メール アプリケーションのユーザーに表示される受信者 (人またはシステム) の名前を示すオプションの表示名、および (2)山括弧 ("<" と ">") で囲まれた addr-spec アドレス。受信者の名前や山かっこなしで、addr-spec アドレスだけが表示されるメールボックスの別の単純な形式もあります。

この例は次のようになります。

John Doe <john.doe@example.com>

暗示されているように、メール クライアントは通常、存在する場合は (オプションの) name 属性を表示し、名前が存在しない場合はアドレス自体を表示します。

INDY 用語では、TIdEMailAddressItem には 3 つのプロパティがあり、常に同期しています。

  • Addressは、メールボックスのアドレス仕様部分です。たとえば、次のようになります。john.doe@example.com
  • Nameは、メールボックスの名前の部分です。たとえば、次のようになります。John Doe
  • Text両方の部分があります。たとえば、次のようになります。John Doe <john.doe@example.com>

その 1 つを変更すると、他のものにも同じ変更が反映されます。

したがって、次のように Text プロパティを直接設定することで、必要なことを行うことができます。

MyNewIndyMessage.From.Text := 'This mail is urgent to read <myname@companyX.com>';

または、それぞれを個別に設定することもできます。

MyNewIndyMessage.From.Address := 'myname@companyX.com';
MyNewIndyMessage.From.Name := 'This mail is urgent to read';

とはいえ、実際には名前としてではなく、その名前を件名として (いくつかの詳細情報と共に)使用することもできますが、それはあなた次第です。

于 2013-01-28T00:02:08.430 に答える