Das Skript, das ich verwende, ist ziemlich ähnlich; Ich poste es hier als ein Beispiel dafür, wie man die email. * Module benutzt, um MIME-Nachrichten zu erzeugen; so kann dieses Skript leicht geändert werden, um Bilder usw. anzufügen.
Ich verlasse mich auf meinen ISP, um den Datumzeitheader hinzuzufügen.
ISP verlangt von mir eine sicheren SMTP-Verbindung zu verwenden, um Mail zu senden, ich auf dem ssmtplib Modul verlassen (zum Herunterladen auf http://www1.cs.columbia.edu/~db2501/ssmtplib.py)
Wie in Ihrem Skript, der Benutzername und das Passwort, (Dummy-Wert weiter unten), verwendet, um auf dem SMTP-Server zu authentifizieren, sind in Klartext in der Quelle. Dies ist eine Sicherheitsschwäche; aber die beste Alternative hängt davon ab, wie vorsichtig Sie (wollen?) sein müssen, um diese zu schützen.
=======================================
#! /usr/local/bin/python
SMTPserver = 'smtp.att.yahoo.com'
sender = '[email protected]_email_domain.net'
destination = ['[email protected]_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)
# old version
# from email.MIMEText import MIMEText
from email.mime.text 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.quit()
except Exception, exc:
sys.exit("mail failed; %s" % str(exc)) # give a error message
Stellen Sie sicher, dass Sie das Datum/Uhrzeit korrekt erhalten. Ich fand die folgende Funktion sehr nützlich, die Ihnen einen perfekt formatierten Wert für den Date-Header gibt: http://docs.python.org/py3k/library/email.util.html#email.utils.formatdate – BastiBen
hier ist ein Codebeispiel, das [E-Mail senden mit Unicode-Text im Betreff und/oder im Text] ermöglicht (http://stackoverflow.com/a/20787826/4279) – jfs
Hier ist ein Codebeispiel, das zeigt, wie [Inline-Bilder senden (plus E-Mail mit HTML- und Nur-Text-Teilen)] (http://stackoverflow.com/a/20485764/4279). Es zeigt auch, wie SSL-Parameter in alten Python-Versionen konfiguriert werden. – jfs