library - Python: ¿cómo enviar correo con TO, CC y BCC?
python send email cc bcc (6)
Necesito pruebas para llenar unos cientos de buzones de correo electrónico con varios mensajes, y usaré smtplib para eso. Pero, entre otras cosas, debo poder enviar mensajes no solo a buzones específicos, sino también a CC y BCC. No parece que smtplib admita CC-ing y BCC-ing mientras envía correos electrónicos.
Buscando sugerencias sobre cómo hacer CC o BCC enviando mensajes desde el script python.
(Y, no, no estoy creando una secuencia de comandos para enviar correo no deseado a nadie fuera de mi entorno de prueba).
La clave es agregar a los destinatarios como una lista de id. De correo electrónico en su llamada a sendmail.
import smtplib
from email.mime.multipart import MIMEMultipart
me = "[email protected]"
to = "[email protected]"
cc = "[email protected],[email protected]"
bcc = "[email protected],[email protected]"
rcpt = cc.split(",") + bcc.split(",") + [to]
msg = MIMEMultipart(''alternative'')
msg[''Subject''] = "my subject"
msg[''To''] = to
msg[''Cc''] = cc
msg[''Bcc''] = bcc
msg.attach(my_msg_body)
server = smtplib.SMTP("localhost") # or your smtp server
server.sendmail(me, rcpt, msg.as_string())
server.quit()
La distinción entre TO, CC y BCC ocurre 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
BCC: este destinatario no se menciona en los encabezados, pero sigue siendo un destinatario.
Si usted tiene
TO: [email protected]
CC: [email protected]
BCC: [email protected]
Tienes tres destinatarios. Los encabezados en el cuerpo del correo electrónico incluirán solo el TO: y CC:
Los encabezados de correo electrónico no importan al servidor smtp. Simplemente agregue los destinatarios CC y BCC a los destinatarios cuando envíe su correo electrónico. Para CC, agréguelos al encabezado CC.
toaddr = ''[email protected]''
cc = [''[email protected]'',''[email protected]'']
bcc = [''[email protected]'']
fromaddr = ''[email protected]''
message_subject = "disturbance in sector 7"
message_text = "Three are dead in an attack in the sewers below sector 7."
message = "From: %s/r/n" % fromaddr
+ "To: %s/r/n" % toaddr
+ "CC: %s/r/n" % ",".join(cc)
+ "Subject: %s/r/n" % message_subject
+ "/r/n"
+ message_text
toaddrs = [toaddr] + cc + bcc
server = smtplib.SMTP(''smtp.sunnydale.k12.ca.us'')
server.set_debuglevel(1)
server.sendmail(fromaddr, toaddrs, message)
server.quit()
No agregue el encabezado bcc.
Vea esto: http://mail.python.org/pipermail/email-sig/2004-September/000151.html
Y esto: "" "Tenga en cuenta que el segundo argumento para 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 por turno. la información está separada de los encabezados de los mensajes, incluso puede BCC a alguien incluyéndolos en el argumento de método pero no en el encabezado del mensaje. "" "desde http://pymotw.com/2/smtplib
toaddr = ''[email protected]''
cc = [''[email protected]'',''[email protected]'']
bcc = [''[email protected]'']
fromaddr = ''[email protected]''
message_subject = "disturbance in sector 7"
message_text = "Three are dead in an attack in the sewers below sector 7."
message = "From: %s/r/n" % fromaddr
+ "To: %s/r/n" % toaddr
+ "CC: %s/r/n" % ",".join(cc)
# don''t add this, otherwise "to and cc" receivers will know who are the bcc receivers
# + "BCC: %s/r/n" % ",".join(bcc)
+ "Subject: %s/r/n" % message_subject
+ "/r/n"
+ message_text
toaddrs = [toaddr] + cc + bcc
server = smtplib.SMTP(''smtp.sunnydale.k12.ca.us'')
server.set_debuglevel(1)
server.sendmail(fromaddr, toaddrs, message)
server.quit()
No funcionó para mí hasta que creé:
#created cc string
cc = ""[email protected];
#added cc to header
msg[''Cc''] = cc
y que agregó cc en el destinatario [list] como:
s.sendmail(me, [you,cc], msg.as_string())
Puedes probar MIMEText
msg = MIMEText(''text'')
msg[''to''] =
msg[''cc''] =
a continuación, envíe msg.as_string ()