Ich versuche ein Skript zu erstellen, das bestimmte E-Mails, die bestimmte Kriterien erfüllen, automatisch an eine andere E-Mail weiterleitet.Eine E-Mail mit python smtplib weiterleiten
Ich habe das Herunterladen und Parsing von Nachrichten mit Imaplib und E-Mail funktioniert, aber ich kann nicht herausfinden, wie man eine ganze E-Mail an eine andere Adresse weiterleitet. Muss ich eine neue Nachricht von Grund auf neu erstellen, oder kann ich die alte irgendwie ändern und erneut senden?
Hier ist, was ich bisher (Client ist eine imaplib.IMAP4 Verbindung, und id ist eine Message-ID):
import smtplib, imaplib
smtp = smtplib.SMTP(host, smtp_port)
smtp.login(user, passw)
client = imaplib.IMAP4(host)
client.login(user, passw)
client.select('INBOX')
status, data = client.fetch(id, '(RFC822)')
email_body = data[0][1]
mail = email.message_from_string(email_body)
# ...Process message...
# This doesn't work
forward = email.message.Message()
forward.set_payload(mail.get_payload())
forward['From'] = '[email protected]'
forward['To'] = '[email protected]'
smtp.sendmail(user, ['[email protected]'], forward.as_string())
Ich bin sicher, es ist etwas, etwas komplizierter ich im Hinblick auf die tun müssen auf den MIME-Inhalt der Nachricht. Sicherlich gibt es eine einfache Möglichkeit, nur die gesamte Nachricht weiterzuleiten?
# This doesn't work either, it just freezes...?
mail['From'] = '[email protected]'
mail['To'] = '[email protected]'
smtp.sendmail(user, ['[email protected]'], mail.as_string())
Hier fehlt zu viel Kontext, um eine Entscheidung zu treffen. Insbesondere, verwenden Sie die Standard-smtplib? Welche Version von Python? Wo ist smtp initialisiert, ist es connect() ed? Hast du eine richtige HELO-Antwort erhalten? – msw
Es ist die Standard-smtplib, python2.6.4. Der smtplib-Client funktioniert gut - ich kann einfache Text-E-Mails senden, indem Sie eine Zeichenfolge als letztes Argument von smtp übergeben. Ich möchte nur eine einfache Möglichkeit finden, den gesamten MIME-Inhalt einer heruntergeladenen Nachricht an eine neue Adresse zu senden. – robbles