Te recomiendo checar la
documentación.
Ademas tratar de usar excepciones para detectar errores. Básicamente tienes la lógica al revés.
Cita:
Iniciado por pydoc If this method does not throw an exception, it returns a dictionary, with one entry for each recipient that was refused. Each entry contains a tuple of the SMTP error code and the accompanying error message sent by the server.
Traducción:
Si este método no arroja una excepción, entonces devuelve un diccionario, con una o mas entradas que fueron rechazadas. Cada entrada contiene una tupla de código de error de STMP y el respectivo mensaje de error enviado por el servidor.
Si un diccionario esta vació (envió el correo satisfactoriamente entonces no hubo error) de cualquier otra forma hubo error.
Solo para recordarte que un diccionario vació es falso, en cualquier otro caso verdadero.
Solo para simplificarlo.
Código Python:
Ver originalsmtp = smtplib.SMTP(server)
successful=True
if (smtp.sendmail(fro, to, msg.as_string())):
successful=False;
smtp.close()
return successful
Otra cosa importante, no olvides cerrar los archivos que abres, linea 34