SMTP: Apakah mungkin untuk mem-CC seseorang tanpa mengirim aslinya?

24

Saya benar-benar mulai memikirkan hal ini karena saya lupa memberi CC seseorang pada email yang seharusnya saya kirim, dan saya ingin dia mendapatkan salinan tanpa mengirim dua kali ke orang lain. Saya akhirnya hanya meneruskannya kepadanya, tapi saya masih penasaran.

Di mana daftar CC dan BCC ditangani di SMTP? Apakah Anda perlu mengontrol server SMTP, atau bisakah itu dilakukan sisi klien?

Terima kasih!


sumber
5
mengapa ini diturunkan? Bagaimanapun, ini adalah pertanyaan yang menarik ...
5
@Chilles - Detail apakah ini mungkin atau tidak BENAR-BENAR merupakan pertanyaan pemrograman IMHO. Ini didefinisikan dalam RFC 2821 dan 2822. Pada akhirnya, semua klien email di luar sana diprogram sesuai dengan definisi ini, dan masing-masing dan setiap pengembang di sini mungkin harus mempelajari SMTP di beberapa titik. Tentu saja aku punya.
3
HARAP hentikan pemungutan suara untuk menutup ini sebagai "milik SuperUser". Hanya karena OP mengatakan itu adalah tindakan mengirim email yang membuatnya berpikir tentang masalah ini, itu tidak membuat pertanyaan aktual "tidak terkait pemrograman". Jika saya memiliki pertanyaan implementasi http yang muncul saat saya mengklik tautan web, apakah itu "tidak terkait pemrograman"? Tidak.

Jawaban:

17

Singkatnya - ya itu mungkin jika Anda dapat terhubung langsung ke server SMTP penerima. Untuk alasan-alasan yang dijabarkan Rup dalam jawabannya, ini mungkin tidak terlalu praktis, dan jika Anda berada di jaringan di belakang firewall, Anda mungkin tidak bisa mendapatkan koneksi ke server jauh pada port TCP 25 sama sekali.

Dengan asumsi ini tidak berlaku untuk Anda, maka inilah detailnya:

Ketika Anda (sebagai klien email) terhubung ke server email penerima, semua server yang peduli (untuk tujuan pengiriman) adalah penerima yang ditentukan dalam RCPT TO:. Lihat RFC2821 - Protokol Transfer Surat Sederhana . Itu tidak membedakan antara jenis penerima (ke:, cc: atau bcc :), ia hanya tahu Anda mengatakan "pastikan penerima di server Anda menerima ini".

Namun, sejauh menyangkut klien email sebenarnya, header dalam pesanlah yang mengatakan siapa semua penerima pesan itu. Lihat RFC2822 - Format Pesan Internet .

Dengan kata lain, header TO :, CC: dan BCC: ada untuk kepentingan klien email, sedangkan distribusi aktual ditangani selama 'percakapan' SMTP dengan server mail.

Jadi, Anda dapat melakukan percakapan dengan server SMTP yang terlihat seperti ini:

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: <[email protected]>
250 2.1.0 OK f70si17620845wej.110
RCPT TO: <[email protected]>
250 2.1.5 OK f70si17620845wej.110
DATA
354  Go ahead f70si17620845wej.110
To: [email protected]
cc: [email protected], [email protected]
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.

Efek bersihnya adalah [email protected]menerima salinan email yang memasukkannya ke dalam daftar cc serta penerima yang asli [email protected], dan penerima cc yang asli [email protected].

Namun, karena kami tidak pernah benar-benar terhubung ke server surat kedua, mereka tidak benar-benar menerima email untuk kedua kalinya. Dan karena kami tidak dapat mengubah surat yang sudah dikirim sebelumnya, mereka tidak akan pernah melihat bahwa kami menambahkan penerima cc lain.

Rob Levine
sumber
4

Yang terjadi adalah

  1. Anda mengirim email ke server SMTP lokal (atau ISP) Anda
  2. Server SMTP lokal Anda memperluas daftar penerima dan menyusun daftar server yang perlu diajak bicara untuk semua penerima. Ini menghapus header BCC dari pesan.
  3. Untuk setiap server, ini menghubungkan dan mengatakan "Ini adalah email untuk penerima X, Y: di sini adalah header dan isi pesan"

yaitu jika Anda dapat menyuntikkan email ke 3, mengirimkan langsung ke server SMTP rumah pengguna CC yang terlewatkan, maka Anda dapat mengirimkan mereka CC tanpa harus mengirim email ke orang lain. Khususnya penerima BCC akan mendapatkan tajuk dan isi pesan yang tidak menyebutkannya sama sekali (kecuali mungkin tajuk 'X-Envelope-To').

Secara praktis, jauh lebih mudah untuk mengirim ke semua orang. Untuk melakukan ini secara efisien, Anda perlu memodifikasi klien email dan server SMTP lokal Anda untuk mendukung daftar penerima palsu, atau daftar pengecualian jangan-kirim-ke-kirim, yang diproses selama ekspansi penerima.

Rup
sumber
2

Masalah ini sebenarnya dipecahkan oleh IETF yang sedang dalam proses: Copy Karbon Kosmetik . Sayangnya, saya tidak tahu ada klien email yang benar-benar menerapkan CCC, karena konsep tersebut secara luas dianggap sebagai lelucon yang tidak berguna untuk Hari April Mop.

Dalam semua keseriusan, apa yang Anda tanyakan adalah mungkin, terutama karena isi email tidak benar-benar memengaruhi kepada siapa surat dikirim ke lapisan SMTP. Klien email ditulis untuk mengirim email ke semua orang di bidang Ke, CC, dan BCC, tetapi mereka tidak diharuskan untuk melakukan ini dengan standar apa pun.

Diperbarui: Lebih tepatnya, saat mengirim email ke server SMTP, pengirim menggunakan perintah RCPT untuk menentukan alamat email mana yang harus dikirimi pesan. Itu kemudian mengirim isi surat dengan perintah DATA. Server SMTP seharusnya tidak melihat konten. Seharusnya mungkin untuk menambahkan satu penerima ke baris header CC dari sebuah pesan dan meminta server SMPT mengirimkannya hanya ke satu alamat itu.

Karmastan
sumber
0

Jika saya memahami ini dengan benar, apa yang Anda coba lakukan adalah mengirim pesan untuk kedua kalinya, termasuk penerima asli di header Ke: dan CC:, tetapi hanya menerima pesan itu oleh beberapa penerima tambahan. Seperti yang dicatat oleh jawaban lain, ini dapat dilakukan oleh klien email Anda yang berkomunikasi dengan server SMTP dan menetapkan hanya satu penerima, tetapi termasuk header Kepada: dan Cc: dari email asli.

The Apple Mail klien memiliki fungsi yang dapat melakukan secara efektif ini. Fungsi Redirect dapat ditemukan di menu Pesan, atau menu kontekstual untuk pesan. Fungsi ini dirancang untuk digunakan sebagai cara untuk meneruskan email secara transparan ke orang lain tanpa menambahkan Fwd: ke baris subjek dan meningkatkan tingkat penawaran, tetapi juga dapat digunakan pada pesan yang telah Anda kirim sebelumnya. Itu menjaga bidang Ke / Cc / Dari dari pesan asli yang sama, dan menambahkan penerima baru di header Resent-To dan Resent-CC. Satu-satunya penerima pesan yang dikirim kembali adalah yang Anda tentukan saat menyusunnya. Tidak sepenuhnya jelas bagaimana ini bekerja ketika Anda menggunakan fitur ini, jadi pastikan untuk mengujinya terlebih dahulu.

NReilingh
sumber
-1

Mungkin diizinkan / tidak diizinkan berdasarkan klien-oleh-klien, tetapi Anda dapat mencoba meletakkan sesuatu yang palsu (seperti ";; penerima yang tidak diungkapkan ;;") di Kepada dan menempatkan semua orang di BCC. Kemudian, mengulangi prosesnya akan membuatnya tampak seperti email yang sama, asalkan tidak ada yang menonton cukup dekat untuk stempel waktu dan utas pesan dan semacamnya.

David
sumber