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

Imágen de perfil
Val: 666
Bronce
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

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


Python

Actualizado el 28 de Octubre del 2018 por Xavi (548 códigos) (Publicado el 5 de Julio del 2011)
10.618 visualizaciones desde el 5 de Julio del 2011
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 5 de Julio del 2011gráfica de visualizaciones de la versión: Versión 1
4.093 visualizaciones desde el 5 de Julio del 2011

Versión 1b

Publicado el 28 de Octubre del 2018gráfica de visualizaciones de la versión: Versión 1b
6.526 visualizaciones desde el 28 de Octubre del 2018
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...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s2095