[ Foro de Python ]

ayuda con envío de un mail con python

27-Mar-2017 21:40
Invitado (Eterno4ever)
1 Respuestas

hola, estoy inmerso en un proyecto y no me acabo de salir con la mía, la idea es enviar un email con un archivo adjunto cada vez que se acciona un pulsador,

El montaje va bien, pero en determinadas condiciones envía la imagen totalmente en negro.
Dejo el código y mi email por si alguien ve el problema y me quiere echar una mano.

[ (emnail eliminado) ]

Muchas gracias.

#!/usr/bin/env python
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.Utils import COMMASPACE, formatdate
from email import Encoders
import os

USERNAME = "username@gmail.com"
PASSWORD = "password"

def sendMail(to, subject, text, files=[]):
assert type(to)==list
assert type(files)==list

msg = MIMEMultipart()
msg['From'] = USERNAME
msg['To'] = COMMASPACE.join(to)
msg['Date'] = formatdate(localtime=True)
msg['Subject'] = subject

msg.attach( MIMEText(text) )

for file in files:
part = MIMEBase('application', "octet-stream")
part.set_payload( open(file,"rb").read() )
Encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"'
% os.path.basename(file))
msg.attach(part)

server = smtplib.SMTP('smtp.gmail.com:587')
server.ehlo_or_helo_if_needed()
server.starttls()
server.ehlo_or_helo_if_needed()
server.login(USERNAME,PASSWORD)
server.sendmail(USERNAME, to, msg.as_string())
server.quit()

sendMail( ["*******your_email********@gmail.com"],
"Doorbell notification",
"Someone is ringing the doorbell, picture attached",
["/home/pi/webcam.jpg"] )


02-Apr-2017 12:34
Nacho Cabanes (+32)

La lógica parece correcta. De hecho, si no lo fuera, no funcionaría "a veces". Quizá sea simplemente un problema de temporización: que la imagen o bien no esté disponible o bien esté bloqueada (todavía) porque aún se esté generando. Puedes probar a solucionarlo añadiendo un pequeño retardo (un par de segundos) antes de enviar el correo que utiliza esa imagen.

Por cierto, censuro tu dirección de correo electrónico, para que recibas la menor cantidad de Spam posible. Puedes echar un vistazo al foro cuando quieras para ver si tienes respuesta.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)