良い一日!
「明確な」質問で申し訳ありませんが、説明させてください。私の「プログラム」では、(たとえば)gmail SMTPサーバーを介していくつかのメールを送信しています。私が送信したすべてのメールのヘッダーに、(私が生成した) 一意の ID が含まれているとしましょう。そのメッセージを gmail から (たとえば、python imaplib を使用して) 取得した後、その一意の ID (ヘッダー内) を再度取得する可能性はありますか?
ありがとう
2 に答える
一般に、MTA は導入したメッセージ ヘッダーを保持します。そのためにはリレー MTA が必要です。
セクション 6.4 で説明されているように、リレー SMTP は、メッセージ データのヘッダー セクションまたは本文を検査または処理する必要がなく、独自の「Received:」ヘッダー フィールド (セクション 4.4) を追加する場合を除き、そうしてはなりません (MUST NOT)。メールシステムでのループの検出を試みます (セクション 6.3 を参照)。もちろん、この禁止事項は、これらのヘッダー フィールドまたはテキストの変更にも適用されます (セクション 7.9 も参照)。
また、通常、受信側の MTA は、メッセージの受信、スパム チェック、ループ検出などに関連するヘッダーを追加するだけです。そうです、GMail かそれ以外のどちらの SMTP サーバーを使用するかに関係なく、ほぼ確実に安全です。
ID が本当に一意である場合は、それらをヘッダー値の一部として使用することを検討してくださいMessage-ID
。Message-ID
この目的で使用する利点は、ユーザーがメッセージに返信するときに、通常、そのMessage-ID
値をIn-Reply-To
and/orReferences
ヘッダーに含めることです。
「Message-ID:」フィールドは、特定のメッセージの特定のバージョンを参照する一意のメッセージ識別子を提供します。メッセージ識別子の一意性は、それを生成するホストによって保証されます (以下を参照)。このメッセージ識別子は、機械で読み取り可能であることを意図しており、必ずしも人間にとって意味のあるものではありません。メッセージ識別子は、特定のメッセージの 1 つのバージョンにのみ関係します。その後のメッセージのリビジョンでは、それぞれ新しいメッセージ ID を受け取ります。
「In-Reply-To:」および「References:」フィールドは、メッセージへの返信を作成するときに使用されます。これらは、元のメッセージのメッセージ識別子と他のメッセージのメッセージ識別子を保持します (たとえば、それ自体が返信であったメッセージへの返信の場合)。「In-Reply-To:」フィールドは、新しいメッセージが返信されるメッセージ (またはメッセージ) を識別するために使用できますが、「References:」フィールドは、会話の「スレッド」を識別するために使用できます。
これについて少しテストを行ったところ、可能であり、実際には非常に簡単に見えます。
私はこれを実現するために Mail.php 拡張機能を使用しました (問題ありませんが)。メッセージを送信する前にヘッダーを追加しました ("Trevor" => "My Test")。Gmail でメッセージを受信し、「オリジナルを表示」を実行すると、ヘッダーが含まれています。
次に、このメッセージを (PHP 経由でも) プルダウンすると、入力したカスタム行がヘッダーに含まれています。