Ich versuche, ein Skript zusammenzustellen, das bestimmte E-Mails, die bestimmte Kriterien erfüllen, automatisch an eine andere E-Mail weiterleitet.
Ich habe das Herunterladen und Parsen 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 sie erneut senden?
Hier ist, was ich bisher habe (Client ist eine imaplib.IMAP4-Verbindung und ID ist eine Nachrichten-ID):
%Vor%Ich bin mir sicher, dass es etwas komplizierteres gibt, was ich bezüglich des MIME-Inhalts der Nachricht tun muss. Sicherlich gibt es eine einfache Möglichkeit, nur die gesamte Nachricht weiterzuleiten?
%Vor%Ich denke, der Teil, den du falsch gemacht hast, war, wie man die Header in der Nachricht ersetzt, und die Tatsache, dass du keine Kopie der Nachricht erstellen musst, kannst du direkt darauf anwenden, nachdem du sie aus dem rohen erzeugt hast Daten, die Sie vom IMAP-Server abgerufen haben.
Sie haben einige Details weggelassen, deshalb ist hier meine komplette Lösung mit allen Details. Beachten Sie, dass ich die SMTP-Verbindung in den STARTTLS-Modus versetzt habe, da ich dies benötige und dass ich die IMAP-Phase und die SMTP-Phase voneinander getrennt habe. Vielleicht dachtest du, dass das Ändern der Nachricht es irgendwie auf dem IMAP-Server ändern würde? Wenn Sie das tun, sollte dies Ihnen deutlich zeigen, dass das nicht passiert.
%Vor%Ich hoffe, das hilft, auch wenn diese Antwort ziemlich spät kommt.
In einer Anwendung lade ich Nachrichten über POP3 herunter (mit poplib) und leite sie mit der zweiten Methode weiter ... Das heißt, ich ändere To / From in der ursprünglichen Nachricht und sende sie, und es funktioniert.
Hast du versucht, in smtp.sendmail zu stochern, um zu sehen, wo es aufhört?