Código de Python - Enviar multitud de correo con imagen incluida en Python 2

Imágen de perfil

Enviar multitud de correo con imagen incluida en Python 2gráfica de visualizaciones


Python

Actualizado el 28 de Octubre del 2018 por Xavi (Publicado el 05 de Julio del 2011)
4.028 visualizaciones desde el 05 de Julio del 2011. Una media de 14 por semana
Código que muestra como enviar un correo utilizando un servidor SMTP en formato texto y html, y con una imagen añadida al correo.
Permite enviar un email a tantas direcciones de correo como se desee. Utiliza la librerías smtplib y email

Requerimientos

Python 2.x

Versión 1

Publicado el 05 de Julio del 2011gráfica de visualizaciones de la versión: Versión 1
3.610 visualizaciones desde el 05 de Julio del 2011. Una media de 14 por semana

Versión 1b

Publicado el 28 de Octubre del 2018gráfica de visualizaciones de la versión: Versión 1b
419 visualizaciones desde el 28 de Octubre del 2018. Una media de 63 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

Implementado TLS y solucionado un simple error.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import sys
import smtplib
 
from email.Utils import make_msgid
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
 
from time import gmtime, strftime
 
# direccion del correo de quien lo envia
me = "yo@dominio.com"
# lista de correos donde enviar el mensaje
mailsTo = ["destinatario1@dominio.com", "destinatario2@dominio.com"]
 
# Send the message via SMTP server
def connect(tls=False):
	try:
		s = smtplib.SMTP('mail.dominio.com')
 
		if tls:
			s.starttls()
 
		s.login("usuarioCorreo","ContraseñaCorreo")
		#s.set_debuglevel(1)
		return s
	except Exception,e:
		print e
		sys.exit()
 
s=connect(True)
 
# Create the body of the message (a plain-text and an HTML version).
text = """
Contenido en texto plano
\nEste contenido se mostrara en los programas de correo que no permitan la utilizacion de contenido html
\nTambien puede ser utilizado por algunos programas de correo en el momento de responder si respondemos en texto plano.
\n\nEs recomendable que haya el mismo contenido en texto plano que en html.
\n\nhttp://www.lawebdelprogramador.com
"""
html = """
<html>
<head>
	<style type="text/css">
		.link {text-decoration:underline;color:#00f;}
		body {font-size:14;}
	</style>
</head>
<body>
	<b>Contenido en HTML</b>
	<p>Este contenido es el que se mostrara en los navegadores que permitan la visualizaci&oacute;n de correos en formato HTML.</p>
	<p>Es recomendable que haya el mismo contenido en texto plano que en html</p>
	<p><a href='http://www.lawebdelprogramador.com' class='link'>http://www.lawebdelprogramador.com</p>
</body>
</html>
"""

# Record the MIME types of both parts - text/plain and text/html.
part1 = MIMEText(text, 'plain', 'UTF-8')
part2 = MIMEText(html, 'html', 'UTF-8')

# Cogemos la imagen y la añadimos al correo
fp=open("logolwp.jpg", 'rb')
image1 = MIMEImage(_imagedata=fp.read(),_subtype="jpeg")
fp.close()

for mailTo in mailsTo:
	# Create message container - the correct MIME type is multipart/alternative.
	msg = MIMEMultipart('alternative')
	msg.set_charset("UTF-8")
	msg['Subject'] 		= "Envio de correo desde python en formato HTML y Text"
	msg['From'] 		= me
	msg['To'] 			= mailTo
	msg['Date'] 		= strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())
	msg['Message-ID']	= "<%s@%s>" % (make_msgid()[1:].split('@')[0],mailTo.split('@')[1])

	# Attach parts into message container.
	# According to RFC 2046, the last part of a multipart message, in this case
	# the HTML message, is best and preferred.
	msg.attach(part1)
	msg.attach(part2)
	msg.attach(image1)

	# sendmail function takes 3 arguments: sender's address, recipient's address
	# and message to send - here it is sent as one string.
	try:
		s.sendmail(me, mailTo, msg.as_string())
	except Exception,e:
		print e
		print mailTo
		print "---------------------------------"
		s=connect()
s.quit()



Comentarios sobre la versión: Versión 1b (0)


No hay comentarios
 

Comentar la versión: Versión 1b

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s2095  
Revisar política de publicidad