SMTP: Ist es möglich, jemanden zu CC, ohne das Original zu senden?

24

Eigentlich habe ich darüber nachgedacht, weil ich vergessen habe, jemandem eine E-Mail zu schicken, die ich senden sollte, und wollte, dass er eine Kopie erhält, ohne sie zweimal an alle anderen zu senden. Am Ende habe ich es nur an ihn weitergeleitet, aber ich bin immer noch neugierig.

Wo werden die CC- und BCC-Listen in SMTP behandelt? Müssen Sie den SMTP-Server steuern, oder kann dies clientseitig erfolgen?

Vielen Dank!


quelle
5
Warum wird das abgelehnt? Immerhin ist es eine interessante Frage ...
5
@Achilles - Die Details, ob dies möglich ist oder nicht, sind IMHO ABSOLUT eine Programmierfrage. Es ist in RFCs 2821 und 2822 definiert. Letztendlich werden alle E-Mail-Clients nach diesen Definitionen programmiert, und jeder Entwickler hier muss sich möglicherweise irgendwann mit SMTP befassen. Das habe ich sicher.
3
BITTE beenden Sie die Abstimmung, um dies als "Gehört zu SuperUser" zu schließen. Nur weil das OP sagt, dass es die Aktion des Sendens einer E-Mail war, die ihn zum Nachdenken über das Problem veranlasste, stellt es die eigentliche Frage nicht "nicht programmierbezogen". Wenn ich eine HTTP-Implementierungsfrage hätte, die mir beim Klicken auf einen Weblink auffiel, wäre das "nicht programmierbezogen"? Nein

Antworten:

17

Kurz gesagt: Ja, wenn Sie eine direkte Verbindung zum SMTP-Server des Empfängers herstellen können. Aus den Gründen, die Rup in seiner Antwort darlegt, ist dies möglicherweise nicht besonders praktisch. Wenn Sie sich in einem Netzwerk hinter einer Firewall befinden, können Sie möglicherweise überhaupt keine Verbindung zu einem Remoteserver auf TCP-Port 25 herstellen.

Angenommen, dies gilt nicht für Sie, dann ist hier das Detail:

Wenn Sie (als E-Mail-Client) eine Verbindung zum E-Mail-Server des Empfängers herstellen, sind für diesen Server (zu Übermittlungszwecken) nur die in angegebenen Empfänger von Bedeutung RCPT TO:. Siehe RFC2821 - Simple Mail Transfer Protocol . Es wird nicht zwischen dem Empfängertyp (zu :, cc: oder bcc :) unterschieden, sondern nur "Stellen Sie sicher, dass der Empfänger auf Ihrem Server dies erhält".

Für den eigentlichen E-Mail-Client des Empfängers sind es jedoch die Kopfzeilen der Nachricht, die angeben, wer alle Empfänger der Nachricht waren. Siehe RFC2822 - Internet-Nachrichtenformat .

Mit anderen Worten, die Header TO :, CC: und BCC: dienen dem Mail-Client, während die eigentliche Verteilung während der SMTP-Konversation mit den Mail-Servern erfolgt.

Sie können sich also tatsächlich mit einem SMTP-Server unterhalten, der ungefähr so ​​aussieht:

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.

Der Nettoeffekt ist, dass er [email protected]eine Kopie der E-Mail erhält, die ihn auf der CC-Liste hat [email protected], sowie den ursprünglichen Empfänger und den ursprünglichen CC-Empfänger [email protected].

Da wir jedoch nie eine Verbindung zu den Mailservern der beiden letzteren hergestellt haben, erhalten diese die E-Mail nicht zum zweiten Mal. Und da wir die E-Mails, die bereits an sie gesendet wurden, nicht ändern können, werden sie nie bemerken, dass wir einen weiteren CC-Empfänger hinzugefügt haben.

Rob Levine
quelle
4

Was passiert ist

  1. Sie senden die E-Mail an Ihren lokalen (oder ISP) SMTP-Server
  2. Ihr lokaler SMTP-Server erweitert die Empfängerliste und berechnet die Liste der Server, mit denen alle Empfänger kommunizieren müssen. Der BCC-Header wird aus der Nachricht entfernt.
  3. Für jeden Server wird eine Verbindung hergestellt und die Meldung "Hier ist eine E-Mail für die Empfänger X, Y: Hier sind die Kopfzeilen und der Nachrichtentext" angezeigt.

Wenn Sie die E-Mail also in 3 einfügen und direkt an den SMTP-Heimserver des vermissten CC-Benutzers übermitteln können, können Sie diesen den CC übermitteln, ohne die E-Mail an alle anderen senden zu müssen. Insbesondere erhält ein BCC-Empfänger Nachrichtenkopfzeilen und -körper, in denen diese überhaupt nicht erwähnt werden (mit Ausnahme eines X-Envelope-To-Headers).

In der Praxis ist es jedoch viel einfacher, an alle zu senden. Um dies effizient zu erledigen, müssen Sie Ihren E-Mail-Client und Ihren lokalen SMTP-Server so ändern, dass eine gefälschte Empfängerliste oder eine Ausschlussliste unterstützt wird, die nicht wirklich an Empfänger gesendet wird und die während der Empfängererweiterung verarbeitet wird.

Rup
quelle
2

Dieses Problem wird tatsächlich durch ein bestehendes IETF-Work-in-Progress gelöst: die Cosmetic Carbon Copy . Leider kenne ich keinen E-Mail-Client, der CCCs implementiert, da der Entwurf allgemein als sinnloser Witz für den Aprilscherz angesehen wird.

Im Ernst, was Sie fragen, ist möglich, vor allem, weil der Inhalt einer E-Mail keinen Einfluss darauf hat, an wen die E-Mail auf der SMTP-Ebene gesendet wird. E-Mail-Clients sind so geschrieben, dass sie E-Mails an alle Personen in den Feldern An, CC und BCC senden. Dies ist jedoch in keiner Weise erforderlich.

Aktualisiert: Um genau zu sein, verwendet der Absender beim Senden von E-Mails an einen SMTP-Server den Befehl RCPT, um anzugeben, an welche E-Mail-Adressen eine Nachricht zugestellt werden soll. Anschließend sendet er den Inhalt der Mail mit einem DATA-Befehl. Der SMTP-Server sollte den Inhalt nicht anzeigen. Es sollte möglich sein, der CC-Kopfzeile einer Nachricht einen Empfänger hinzuzufügen und den SMPT-Server aufzufordern, ihn nur an diese eine Adresse zuzustellen.

Karmastan
quelle
0

Wenn ich das richtig verstehe, versuchen Sie, eine Nachricht ein zweites Mal zu senden, einschließlich der ursprünglichen Empfänger in den Kopfzeilen An: und CC:, aber nur diese Nachricht wird von einigen zusätzlichen Empfängern empfangen. Wie in anderen Antworten angegeben, kann dies dadurch erreicht werden, dass Ihr E-Mail-Client mit dem SMTP-Server kommuniziert und nur einen Empfänger angibt, jedoch die An: - und Cc: -Header der ursprünglichen E-Mail enthält.

Der Apple Mail- Client verfügt über Funktionen, die dies effektiv ausführen können. Die Weiterleitungsfunktion finden Sie im Menü Nachricht oder im Kontextmenü einer Nachricht. Mit dieser Funktion können Sie eine E-Mail transparent an eine andere Person weiterleiten, ohne Fwd: in die Betreffzeile einzufügen und die Angebotsstufe zu erhöhen. Sie kann jedoch auch für zuvor gesendete Nachrichten verwendet werden. Die To / Cc / From-Felder der ursprünglichen Nachricht bleiben unverändert, und die neuen Empfänger werden in den Headern Resent-To und Resent-CC hinzugefügt. Die einzigen Empfänger der erneut gesendeten Nachricht sind diejenigen, die Sie beim Verfassen der Nachricht angegeben haben. Es ist nicht ganz klar, wie dies funktioniert, wenn Sie die Funktion verwenden. Testen Sie sie daher vorher.

NReilingh
quelle
-1

Es kann von Client zu Client erlaubt / verboten werden, aber Sie können versuchen, etwas Falsches (wie ";; nicht bekannte Empfänger ;;") in das An-Feld und alle in das BCC-Feld zu setzen. Wenn Sie den Vorgang dann wiederholen, sieht es aus wie dieselbe E-Mail, solange niemand Zeitstempel, Nachrichten mit Threads und dergleichen genau genug beobachtet.

David
quelle