14

私たちは、ユーザーがクライアントにオファーを含む電子メールを送信できる典型的なビジネス Web アプリを持っています。クライアントがユーザーに直接返信できるように、FROM フィールドにユーザーの電子メールを設定します。問題は、SMTP プロトコルが原因で、未配信の電子メール通知が当社の電子メール アドレス (電子メールを送信するアカウントのアドレス) に返されることです。

この未配信メールを処理するエレガントな方法を知っていますか? つまり、メールが配信されなかったことを差出人に知らせる最も簡単な方法です。

4

3 に答える 3

19

まず、"From:" ヘッダー (受信者が電子メール クライアントで見る) と送信者アドレス (エンベロープ リターン パス、または SMTP "MAIL FROM" コマンドの引数とも呼ばれる) の違いを理解することが重要です。 )。送信者アドレスは、メールを配信できない場合にバウンス メッセージが送信される場所であるため、別の名前のリターン パスです。

SMTP は、送信者アドレスとして使用するアドレスを制限しませんが (構文的に有効である必要があることを除いて)、使用する SMTP クライアント ライブラリが制限される可能性があるため、確認する必要があります。

送信者アドレスを変更すると、電子メールのバウンスを検出し、Web アプリケーションまたは送信者に報告するのに役立つ巧妙な操作を行うことができます。最も一般的なのは、送信者アドレスの受信者アドレスをエンコードすることです。たとえば、次のような送信者アドレスを使用します: sender+recipient=recipientdomain.com@senderdomain.com. senderdomain.com を担当する MTA は、sender+foo@senderdomain.com 宛てのすべての電子メールを sender@senderdomain.com に配信することを知る必要がありますが、これはかなり一般的な要件です。次に、受信した電子メールを取得し、受信者が誰であるか (形式は問いません) の内容のバウンス メッセージから解決しようとする代わりに、受信者のアドレスから直接取得できます。

受信者アドレスをハッシュして、送信者アドレスに直接表示されないようにするなど、より複雑なこともできます (sender+e72fab38fb@senderdomain.com など)。また、同じアドレスに複数のメールを送信していて、どれがバウンスしたかを知りたい場合に備えて、送信されたメールの識別子を含めることができます。

これらのトリックはVariable Envelope Return Pathまたは VERP と呼ばれ、メーリング リスト ソフトウェアによって一般的に実装されます。

于 2008-09-23T22:49:27.353 に答える
3

メールには3つの「ヘッダー」があります。

  1. から。
    • これは、ユーザーが「発信者」と見なすものです。
  2. に返信。
    • これは、返信が意図されている場合に電子メールが送信される場所です
  3. 復路。
    • これは、宛先が存在しない場合に電子メールがルーティングされる場所です。

あなたはおそらく3番目を設定したいと思うでしょう:)

(一部のサーバーは、これらの失われたメッセージにまったく応答しないことに注意してください。最近、スパマーが自分のアドレスではないアドレスをそこに配置し、自動応答システムを使用して3番目の部分のバウンス攻撃を行い、電子メールサーバーをオープンリレーに変えているためです。 )。

詳細については、このドキュメントのセクション4.4を参照してください:http://www.faqs.org/rfcs/rfc822.html

于 2008-09-23T22:32:38.703 に答える
0

正確にどのルーチンを使用してEメールを送信していますか?HTTP put_linesを使用して生のSMTP経由で電子メールを送信し、FROM:フィールドで指定したアドレスに返信が返送されます。

SMTP APIラッパーに[返信先:]フィールドがあるかどうかを確認します

一部のAPIは、スパムの可能性を高めるため、その機能を提供しない場合があります。

于 2008-09-23T22:31:11.453 に答える