Frage

Ich habe dies notiert auf einige meinen Code für eine Weile:

/**
 * Add a BCC.
 *
 * Note that according to the conventions of the SMTP protocol all
 * addresses, including BCC addresses, are included in every email as it
 * is sent over the Internet. The BCC addresses are stripped off blind
 * copy email only at the destination email server.
 *
 * @param string $email
 * @param string $name
 * @return object Email
 */

Ich kann mich nicht erinnern, wo ich es bekommen habe aus ( mögliche Quelle ), aber das sollte nicht auf diese Frage relevant sein. Im Grunde genommen, wenn ich versuche, eine E-Mail mit BCCs über SMTP die BCC-Adressen zu senden, sind nicht versteckt - ich habe die ganze RFC für das SMTP-Protokoll lesen (vor ein paar Jahren), und ich glaube nicht, dass ich etwas fehlt bin <. / p>

Das Merkwürdige ist, wenn ich eine E-Mail mit BCCs mit der Einbau in mail() Funktion alles richtig funktioniert und ich habe keine Ahnung, warum. - ich meinen eigenen E-Mail-Absender möchte rolle aber ich kann nicht, dies zu verstehen

Kann jemand bitte etwas Licht in dieses dunkelen Thema vergießen?

War es hilfreich?

Lösung

Die BCC-Adressen werden nicht am Ziel E-Mail-Server abgezogen. Das ist nicht, wie es funktioniert.

Wie SMTP tatsächlich funktioniert

  • Der Absender wird eine Liste der RCPT TO Befehle an den SMTP-Server, einen für jeden Empfänger E-Mail-Adressen senden, und dieser Befehl unterscheidet nicht, ob der Empfänger ein normale An, CC oder BCC-Typ-Empfänger.
  • Schon bald nach dem Aufruf des Befehls, der den SMTP-Server sagt, wer der Absender ist, der der Server ist, und alles andere, nur dann wird der Sender den DATA Befehl aufrufen, in denen der Inhalt der E-Mail enthalten wird - die aus der aus E-Mail-Header und Körper - die eine, die von E-Mail-Clients empfangen werden. Unter diesen E-Mail-Header sind die üblichen von der Adresse, zu Adresse, CC-Adresse.
  • Die BCC-Adresse nicht an den Empfänger gezeigt, nur weil es nicht unter dem DATA Befehl ausgedruckt ist, nicht, weil der Ziel-SMTP-Server sie abgestreift. Der Ziel-SMTP-Server wird den RCPT TO für die Liste der E-Mail-Adressen bezieht sie nur, dass der E-Mail-Inhalt erhalten soll. Es ist nicht wirklich egal, ob der Empfänger in dem An, CC oder BCC-Liste.
    Update (zu klären.): BCC E-Mail-Adressen müssen in der RCPT TO Befehlsliste aufgeführt werden, aber die BCC-Header sollte nicht unter dem DATA Befehl gedruckt werden

einen Teil des RFC Zitiert, dass ich denke, um Ihren Fall relevant ist:

Bitte beachten Sie, dass die E-Mail-Daten enthalten die Memo-Header Elemente wie Datum, Betreff, An, Cc Von [2].

Ausrollen Ihre eigene E-Mail-Absender

Ein paar Jahre, ich glaube ehrlich gesagt, ist eine recht lange Zeit zurück zu der Annahme, dass Sie noch Ende-zu-Ende auswendig lernen von RFC 821 . :)

Andere Tipps

Sehr spät, aber die akzeptierte Antwort ist im Wesentlichen falsch.

Zunächst einmal hat SMTP nichts mit BCC zu tun. SMTP, als ein Protokoll, betreffen nur mit einem Rückkanal (die MAIL Anfrage), eine Liste von Empfängern (die RCPT Anfrage), und die Daten übertragen werden sollen (die DATA Anfrage). Wenn Sie eine E-Mail an jemanden per SMTP senden möchten, dann haben Sie ihre Adresse in einem RCPT Anfrage zu liefern, period.

Der Inhalt einer E-Mail - die DATA, effektiv - sind vollständig separat angegeben, in RFC2822 . Es gibt eine Menge Spielraum, wie BCC behandelt werden soll. Die Spezifikation gibt 3 Möglichkeiten von BCC Handhabung und in nur einer von ihnen ist die BCC gezupft, während die E-Mail vor. Wenn ich Thunderbird als E-Mail-Client verwenden, zum Beispiel, und es an einen SMTP-Server verweisen, und dann Blick auf der Nachricht auf der Linie, dann finde ich, dass der Thunderbird BCC (aus dem SMTP DATA) gegangen ist, und die SMTP-Verbindung stattdessen enthält eine Standard-RCPT Anforderung für die bcc'ed Adresse. So, Thunderbird wandelt BCC zu RCPT, aber das ist nicht der einzige Weg, es zu tun.

Ein weiterer Platz zum Griff BCC ist an dem MTA - mit anderen Worten, was auch immer SMTP-Server Ihres E-Mail-Client gerichtet ist. Sendmail zum Beispiel durchsucht alle der To, Cc und Bcc Linien im SMTP DATA, und erstellt dann eine Adressliste aus diesen Zeilen, und dann entfernt die Bcc Linie. Sie können Sendmail überzeugen, die Bcc zu halten, wenn Sie wollen. Wenn Sendmail nicht das Ziel MTA ist, dann wird es zu einem anderen MTA über SMTP, verbindet und die Empfängeradressen über RCPT senden. Mit anderen Worten, wenn sendmail ist das Ziel MTA, und es eine Bcc bekommt, wird es Streifen aus, im Gegensatz zu Amry Aussage.

Es gibt auch einige Verwirrung in den Kommentaren. Sie können RCPT Adressen für alle Domain, nicht nur eine Liste von Adressen in der gleichen Domäne angeben. Der MTA hat den MX-Datensätze für die Zieldomänen Arbeit zu sehen, wo alles zu senden. Die google.com und yahoo.com Aussagen sind falsch.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top