Necesito, con fines de prueba, llenar unos cientos de buzones de correo electrónico con varios mensajes, e iba a usar smtplib para eso. Pero, entre otras cosas, necesito poder enviar mensajes no solo A buzones de correo específicos, sino también CC y CCO. No parece que smtplib admita CC-ing y BCC-ing al enviar correos electrónicos.
Buscando sugerencias sobre cómo enviar mensajes en CC o CCO desde el script de Python.
(Y no, no estoy creando un script para enviar spam a nadie fuera de mi entorno de prueba).
La clave es agregar los destinatarios como una lista de ID de correo electrónico en su llamada de sendmail.
fuente
msg['BCC']
desactivada: revela su remitente oculto y no tiene ningún impacto en si el mensaje se le envía o no (los argumentos parasendmail
hacerlo).No agregue el encabezado Bcc.
Vea esto: http://mail.python.org/pipermail/email-sig/2004-September/000151.html
Y esto: "" "Observe que el segundo argumento de sendmail (), los destinatarios, se pasa como una lista. Puede incluir cualquier número de direcciones en la lista para que el mensaje se entregue a cada uno de ellos. Dado que el sobre la información está separada de los encabezados de los mensajes, incluso puede BCC a alguien incluyéndolo en el argumento del método pero no en el encabezado del mensaje. "" "de http://pymotw.com/2/smtplib
fuente
A partir de Python 3.2, lanzado en noviembre de 2011, smtplib tiene una nueva función en
send_message
lugar de solosendmail
, lo que facilita el manejo de To / CC / BCC. Extrayendo de los ejemplos de correo electrónico oficiales de Python , con algunas pequeñas modificaciones, obtenemos:El uso de los encabezados funciona bien, porque send_message respeta BCC como se describe en la documentación :
Con
sendmail
era común agregar los encabezados CC al mensaje, haciendo algo como:O
El problema es que la función sendmail trata todos esos encabezados de la misma manera, lo que significa que se enviarán (visiblemente) a todos los usuarios de To: y BCC:, anulando los propósitos de BCC. La solución, como se muestra en muchas de las otras respuestas aquí, fue no incluir BCC en los encabezados y, en cambio, solo en la lista de correos electrónicos pasados
sendmail
.La advertencia es que
send_message
requiere un objeto Message, lo que significa que deberá importar una clase desde enemail.message
lugar de simplemente pasar cadenas asendmail
.fuente
La distinción entre TO, CC y BCC se produce solo en los encabezados de texto. En el nivel SMTP, todos son destinatarios.
TO: hay un encabezado TO: con la dirección de este destinatario
CC: hay un encabezado CC: con la dirección de este destinatario
CCO: este destinatario no se menciona en los encabezados, pero sigue siendo un destinatario.
Si usted tiene
Tienes tres destinatarios. Los encabezados en el cuerpo del correo electrónico incluirán solo TO: y CC:
fuente
Puedes probar MIMEText
luego envía msg.as_string ()
https://docs.python.org/3.6/library/email.examples.html
fuente
No funcionó para mí hasta que creé:
y luego agregó cc en el destinatario [lista] como:
fuente
Ninguna de las cosas anteriores funcionó para mí, ya que tenía varios destinatarios tanto en 'a' como en 'cc'. Así que intenté como a continuación:
y extender los 'destinatarios' con 'cc_recipients' y enviar correo de manera trivial
fuente