Sobre Gmail
Este servidor, al igual que otros muchos por ahí, utiliza conexiones cifradas, por lo que mandar un correo nos obliga a establecer una conexión segura antes de autenticarnos (lo cual está muy requetebién y es muy sencillo).
Supongo que esta receta funcionará igual para todos aquellos servidores que requieran TLS puesto que cumple con la RFC 821 y la RFC 1869 .
Componer el mensaje
En python un mail es básicamente un diccionario cuyas keys son los nombres de los campos: Subject, Reply-To, etc... pero que además nos ofrece un par de métodos interesantes que nos permiten attach-ear imágenes y codificar todo el mensaje como mensaje MIME:
from email.MIMEText import MIMEText
msg = MIMEText("Hello World,\n o algo parecido...")
msg['Subject'] = 'Esto es una prueba'
msg['From'] = "Juancar I"
msg['Reply-to'] = "La casa ficticia"
msg['To'] = "La Sofi"
Mensaje con texto y fotos
Esto está sacado de la documentación de python y no lo he probado, pero en teoría funciona, si alguien me lo confirma pues mejor que mejor.
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
msg = MIMEMultipart()
msg['Subject'] = 'Tu maridito achantando!'
msg['From'] = 'Juancar I'
msg['To'] = 'La Sofi'
msg.preamble = 'Nuestro viajecito pagado'
imagen = open('/home/juancar/vacaciones/visita_usa/callate01.png', 'rb')
attachment = MIMEImage(imagen.read())
imagen.close()
msg.attach(attachment)
Aquí tenéis cómo enviar un mensaje con imágenes, podéis attachear cuantas imágenes queráis de la misma manera. Si queréis envíar sonidos o algún otro tipo de fichero, consultad la documentación de python porque se pueden componer cosas bastante chulas de forma similar (básicamente cambiar la clase MIMEImage por una más adecuada).
Conectar con el servidor SMTP
Asumimos aquí que tienes un objeto msg construído como anteriormente explicamos, pues bien, la cosa queda más o menos tal que así:import getpass
import smtplib
sender = smtplib.SMTP('smtp.gmail.com')
sender.ehlo()
sender.starttls()
usuario_gmail = 'ssmm_juancar'
sender.login(usuario_gmail, getpass.getpass())
origen = usuario_gmail + '@gmail.com'
destino = 'ssmm_sofi@yahoo.es'
sender.sendmail(origen, destino, msg.as_string())
sender.close()
Y así de fácil es!
En este punto sabed que el origen y el destino deben ser auténticos, en
caso contrario, el servidor de gmail nos dirá que hasta luego
(y en el error nos da un bonito enlace con ayuda sobre su SMTP). Otra
cosa más, si nuestro servidor utiliza algún tipo de certificado
especial, se puede especificar en la función starttls().
No hay comentarios:
Publicar un comentario