SMTP:オリジナルを送信せずに誰かにCCすることは可能ですか?


24

私が実際にこれについて考え始めたのは、私が送信するはずだったメールで誰かにCCするのを忘れて、他の人に二重送信せずにコピーを手に入れたかったからです。私は彼にそれを転送するだけになりましたが、私はまだ興味があります。

SMTPでCCおよびBCCリストはどこで処理されますか?SMTPサーバーを制御する必要がありますか、それともクライアント側で実行できますか?

ありがとう!

email  smtp 

5
なぜこれがダウン投票されているのですか?結局のところ、興味深い質問です

5
@Achilles-これが可能かどうかの詳細は、絶対にプログラミングの質問です。それはRFC 2821および2822で定義されています。1日の終わりに、そこにあるすべてのメールクライアントはこれらの定義に従ってプログラムされます。確かにあります。

3
「スーパーユーザーに属する」としてこれを閉じるために投票を停止してください。OPが問題を考えさせるのは電子メールを送信するアクションであると言っているからといって、実際の質問は「プログラミングに関係ない」ということにはなりません。Webリンクをクリックしたときに発生したhttp実装の質問がある場合、それは「プログラミング関連ではない」でしょうか?いいえ

回答:


17

つまり、受信者のSMTPサーバーに直接接続できる場合は可能です。Rupが彼の答え概説している理由からそれは特に実用的ではないかもしれません。また、ファイアウォールの背後にあるネットワーク上にいる場合、TCPポート25でリモートサーバーに接続できない場合があります。

これがあなたに当てはまらないと仮定すると、ここに詳細があります:

(メールクライアントとして)受信者のメールサーバーに接続する場合、そのサーバーが(配信目的で)気にするのは、で指定された受信者のみRCPT TO:です。RFC2821-Simple Mail Transfer Protocolを参照してください。受信者のタイプ(to:、cc:またはbcc :)を区別せず、「サーバーの受信者がこれを受信して​​いることを確認してください」と言っていることを知っているだけです。

ただし、受信者の実際のメールクライアントに関する限り、メッセージのすべての受信者が誰であるかを示すのはメッセージのヘッダーです。RFC2822-インターネットメッセージフォーマットを参照してください。

つまり、TO:、CC :、およびBCC:ヘッダーはメールクライアントの利益のためにありますが、実際の配信はメールサーバーとのSMTP「会話」中に処理されます。

実際、次のようなSMTPサーバーと会話することができます。

C:>telnet aspmx.l.google.com 25
220 mx.google.com ESMTP f70si17620845wej.110
HELO myserver.mydomain.co.uk
250 mx.google.com at your service
MAIL FROM: <test@mydomain.co.uk>
250 2.1.0 OK f70si17620845wej.110
RCPT TO: <user_i_missed_out@mydomain.co.uk>
250 2.1.5 OK f70si17620845wej.110
DATA
354  Go ahead f70si17620845wej.110
To: recipient_on_original@somewhere.com
cc: another_recipient_on_original@somewhere.com, user_i_missed_out@mydomain.co.uk
Subject: My email

Hi - this is a test
.
250 2.0.0 OK 1277401976 f70si17620845wej.110
QUIT
221 2.0.0 closing connection f70si17620845wej.110


Connection to host lost.

最終的な効果は、user_i_missed_out@mydomain.co.uk彼がccリストにあるメールのコピーrecipient_on_original@somewhere.comと元の受取人と元のcc受取人を受け取るということanother_recipient_on_original@somewhere.comです。

ただし、後者の2つのメールサーバーに実際に接続したことはないため、2回目に実際にメールを受信することはありません。また、以前に送信されたメールを変更することはできないため、別のcc受信者を追加したことに気付かないでしょう。


4

何が起こる

  1. ローカル(またはISP)のSMTPサーバーにメールを送信します
  2. ローカルSMTPサーバーは受信者リストを展開し、すべての受信者と通信する必要があるサーバーのリストを作成します。メッセージからBCCヘッダーを削除します。
  3. サーバーごとに接続し、「受信者X、Y向けの電子メールがあります:メッセージヘッダーと本文があります」と言います。

つまり、メールを3に注入できれば、見逃したCCユーザーのホームSMTPサーバーに直接配信し、他の全員にメールを送信せずにCCを配信できます。特に、BCC受信者は、それらにまったく言及していないメッセージヘッダーと本文を取得します(「X-Envelope-To」ヘッダーを除く場合があります)。

ただし、実際には、全員に送信する方がはるかに簡単です。これを効率的に行うには、電子メールクライアントとローカルSMTPサーバーを変更して、受信者の拡張中に処理する偽の受信者リスト、または実際には送信しない除外リストをサポートする必要があります。


2

この問題は、実際に進行中のIETFの進行中の作業であるコスメティックカーボンコピーによって解決されます。残念ながら、ドラフトはエイプリルフールの無意味な冗談だと広く考えられているため、実際にCCCを実装しているメールクライアントは知りません。

真剣に、あなたが求めていることは可能です。なぜなら、ほとんどの場合、電子メールの内容は、SMTP層でメールの送信先に実際には影響しないからです。電子メールクライアントは、To、CC、およびBCCフィールドの全員にメールを送信するように作成されていますが、標準でこれを行う必要はありません。

更新:正確に言うと、SMTPサーバーにメールを送信する場合、送信者はRCPTコマンドを使用して、メッセージの配信先の電子メールアドレスを指定します。次に、DATAコマンドを使用してメールの内容を送信します。SMTPサーバーはコンテンツを見るべきではありません。メッセージのCCヘッダー行に1人の受信者を追加し、SMPTサーバーにその1つのアドレスのみに配信するように依頼することができるはずです。


0

私がこれを正しく理解している場合、あなたがしようとしているのは、To:ヘッダーとCC:ヘッダーの元の受信者を含むメッセージを2回送信することですが、そのメッセージは追加の受信者によってのみ受信されます。他の回答で指摘したように、これは、SMTPサーバーと通信し、元の電子メールのTo:およびCc:ヘッダーを含む1人の受信者のみを指定する電子メールクライアントによって実現できます。

Appleのメールクライアントは、これを効果的に行うことができます機能を備えています。リダイレクト機能は、メッセージのメッセージメニュー、またはコンテキストメニューに見出すことができます。この関数は、件名行にFwd:を追加して引用レベルを上げることなく、他の人に透過的にメールを転送する方法として使用するように設計されていますが、以前に送信したメッセージにも使用できます。元のメッセージのTo / Cc / Fromフィールドを同じに保ち、Resent-ToおよびResent-CCヘッダーに新しい受信者を追加します。再送メッセージの受信者は、作成時に指定した受信者のみです。この機能を使用したときにこれがどのように機能するかは完全には明らかではないため、事前にテストしてください。


-1

クライアントごとに許可/禁止される場合がありますが、Toに何か偽(「;;非公開受信者;;」など)を入れて、BCCに全員を入れてみてください。その後、タイムスタンプやスレッド化されたメッセージなどを十分に監視している人がいない限り、このプロセスを繰り返すことで同じ電子メールのように見えます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.