Le script que j'utilise est tout à fait semblable; je l'ai poster ici comme un exemple de comment utiliser l'e-mail.* modules pour générer des messages MIME; de sorte que ce script peut être facilement modifié pour joindre des photos, etc.
Je m'appuie sur mon fournisseur d'accès internet pour ajouter la date de l'heure d'en-tête.
Mon fournisseur d'accès m'oblige à utiliser un smtp sécurisé la connexion pour envoyer un mail, je m'appuie sur l'ssmtplib module (téléchargeable à http://www1.cs.columbia.edu/~db2501/ssmtplib.py)
Comme dans votre script, le nom d'utilisateur et le mot de passe (compte tenu des valeurs factices ci-dessous), utilisé pour l'authentification sur le serveur SMTP, sont en texte brut dans la source. C'est une faiblesse de sécurité; mais la meilleure solution dépend de l'attention dont vous avez besoin (envie?) à propos de la protection de ces.
=======================================
#! /usr/local/bin/python
SMTPserver = 'smtp.att.yahoo.com'
sender = 'me@my_email_domain.net'
destination = ['recipient@her_email_domain.com']
USERNAME = "USER_NAME_FOR_INTERNET_SERVICE_PROVIDER"
PASSWORD = "PASSWORD_INTERNET_SERVICE_PROVIDER"
# typical values for text_subtype are plain, html, xml
text_subtype = 'plain'
content="""\
Test message
"""
subject="Sent from Python"
import sys
import os
import re
from smtplib import SMTP_SSL as SMTP # this invokes the secure SMTP protocol (port 465, uses SSL)
# from smtplib import SMTP # use this for standard SMTP protocol (port 25, no encryption)
from email.MIMEText import MIMEText
try:
msg = MIMEText(content, text_subtype)
msg['Subject']= subject
msg['From'] = sender # some SMTP servers will do this automatically, not all
conn = SMTP(SMTPserver)
conn.set_debuglevel(False)
conn.login(USERNAME, PASSWORD)
try:
conn.sendmail(sender, destination, msg.as_string())
finally:
conn.close()
except Exception, exc:
sys.exit( "mail failed; %s" % str(exc) ) # give a error message