Ich brauche zu Testzwecken, um einige hundert E-Mail-Boxen mit verschiedenen Nachrichten zu füllen, und wollte dafür smtplib verwenden. Aber unter anderem muss ich in der Lage sein, Nachrichten nicht nur an bestimmte Postfächer zu senden, sondern auch an CC und BCC. Es sieht nicht so aus, als ob smtplib beim Senden von E-Mails CC-ing und BCC-ing unterstützt.
Suchen Sie nach Vorschlägen zum CC- oder BCC-Senden von Nachrichten aus dem Python-Skript.
(Und - nein, ich erstelle kein Skript, um jemanden außerhalb meiner Testumgebung zu spammen.)
Wichtig ist, dass Sie die Empfänger als Liste der E-Mail-IDs in Ihrem Sendmail-Anruf hinzufügen .
quelle
msg['BCC']
ausgeschaltet - es enthüllt Ihren versteckten Absender und hat keinen Einfluss darauf, ob die Nachricht an ihn gesendet wird oder nicht (die Argumentesendmail
dafür).Fügen Sie den bcc-Header nicht hinzu.
Siehe hierzu: http://mail.python.org/pipermail/email-sig/2004-September/000151.html
Und dies: "" Beachten Sie, dass das zweite Argument an sendmail (), die Empfänger, als Liste übergeben wird. Sie können eine beliebige Anzahl von Adressen in die Liste aufnehmen, damit die Nachricht nacheinander an jede von ihnen übermittelt wird. Seit dem Umschlag Informationen sind von den Nachrichtenkopfzeilen getrennt. Sie können sogar eine BCC-Datei erstellen, indem Sie sie in das Methodenargument, jedoch nicht in den Nachrichtenkopf aufnehmen. "" "von http://pymotw.com/2/smtplib
quelle
Die Unterscheidung zwischen TO, CC und BCC erfolgt nur in den Textüberschriften. Auf SMTP-Ebene ist jeder Empfänger.
TO - Es gibt einen TO: -Header mit der Adresse dieses Empfängers
CC - Es gibt einen CC: -Header mit der Adresse dieses Empfängers
BCC - Dieser Empfänger wird in den Kopfzeilen überhaupt nicht erwähnt, ist aber dennoch ein Empfänger.
Wenn Sie haben
Sie haben drei Empfänger. Die Header im E-Mail-Text enthalten nur TO: und CC:
quelle
Sie können MIMEText ausprobieren
dann sende msg.as_string ()
https://docs.python.org/3.6/library/email.examples.html
quelle
Ab Python 3.2, veröffentlicht im November 2011, hat die smtplib eine neue Funktion
send_message
anstelle von nursendmail
, was den Umgang mit To / CC / BCC erleichtert. Aus den offiziellen Python-E-Mail-Beispielen mit einigen geringfügigen Änderungen erhalten wir:Die Verwendung der Header funktioniert einwandfrei , da send_message BCC wie in der Dokumentation beschrieben respektiert :
Dabei war
sendmail
es üblich, die CC-Header zur Nachricht hinzuzufügen und dabei Folgendes zu tun:Oder
Das Problem ist, dass die sendmail-Funktion alle diese Header gleich behandelt, was bedeutet, dass sie (sichtbar) an alle To: - und BCC: -Benutzer gesendet werden, wodurch die Zwecke von BCC zunichte gemacht werden. Die Lösung bestand, wie in vielen anderen Antworten hier gezeigt, darin, BCC nicht in die Kopfzeilen aufzunehmen, sondern nur in die Liste der E-Mails, an die weitergeleitet wurde
sendmail
.Die Einschränkung besteht darin,
send_message
dass ein Message-Objekt erforderlich ist. Dies bedeutet, dass Sie eine Klasse importieren müssen,email.message
anstatt nur Zeichenfolgen zu übergebensendmail
.quelle
Es hat bei mir nicht funktioniert, bis ich erstellt habe:
und als cc im Empfänger [Liste] hinzugefügt wie:
quelle
Keines der oben genannten Dinge funktionierte für mich, da ich mehrere Empfänger sowohl in 'to' als auch in 'cc' hatte. Also habe ich es wie folgt versucht:
und erweitern Sie die 'Empfänger' mit 'cc_recipients' und senden Sie E-Mails auf triviale Weise
quelle