Senden von E-Mails über Google Mail & python
Was ist die empfohlene Vorgehensweise zum senden von E-Mails mit gmail und python?
Gibt es eine Menge von SO threads, aber die meisten sind alt und auch smtp mit Benutzername & Passwort funktioniert nicht mehr oder der Nutzer hat zur Herabstufung der Sicherheit Ihrer gmail (siehe zum Beispiel hier).
Ist OAuth ist der empfohlene Weg?
InformationsquelleAutor der Frage apadana | 2016-05-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Antwort zeigt, wie zu senden Sie E-Mail mit gmail-API und python. Auch aktualisiert die Antwort zum senden von E-Mails mit attachment.
Gmail API & OAuth -> keine Notwendigkeit, speichern Sie den Benutzernamen und das Passwort in das Skript.
Ersten mal das Skript öffnet einen browser, um das Skript autorisieren und speichern von Anmeldeinformationen lokal (es wird nicht gespeichert, Benutzername und Passwort). Konsequent läuft nicht brauchen, die browser und E-Mails versenden kann gerade.
Mit dieser Methode nicht Fehler wie SMTPException unten und es gibt keine Notwendigkeit, um Zugriff für weniger sichere apps:
Hier sind die Schritte, um E-Mail senden mit gmail-API:
(Wizard link hier, Mehr info hier)
Schritt 2: Installieren Sie die Google-Client-Bibliothek
Schritt 3: das folgende Skript Verwenden, um E-Mail senden(ändern Sie einfach die Variablen in der main-Funktion)
Tipp für die Ausführung dieses Codes auf linux, ohne browser:
Wenn Ihre linux-Umgebung hat keinen browser, um die komplette erste mal Autorisierung haben, können Sie den code ausführen, sobald es auf Ihrem laptop (mac oder windows) und kopieren Sie dann die Anmeldeinformationen für das Ziel der linux Maschine. Anmeldeinformationen werden in der Regel gespeichert in den folgenden Ziel:
InformationsquelleAutor der Antwort apadana
Modifizierte ich dies wie folgt, um die Arbeit mit Python ist3, inspiriert von Python Gmail-API nicht als JSON serialisierbar'
InformationsquelleAutor der Antwort sugarpines
Hier ist das Python-3.6-code (und Erklärungen), die benötigt werden, senden Sie eine E-Mail ohne (oder mit) einer Anlage.
(Senden mit Anhang einfach kommentieren Sie die 2 Zeilen Balg
## without attachment
und Kommentar 2 Zeilen Balg## with attachment
)Alle Kredit - (und Stimmen) zu apadana
InformationsquelleAutor der Antwort
danke an @Guillame, @apadana. @Guillaume die Antwort hat Super funktioniert bei mir unter Win/Python ist3.7, jedoch mit einer änderung. Für alle 3 print-Anweisungen, die ich hatte entfernen Sie das "f", wie in ändern:
zu
Betrachten auch den ersten Teil von @apandana Antwort, um Ihre client_secret.json-Datei. Das war mehr klarer für mich.
InformationsquelleAutor der Antwort ram
Für jupyter-notebook-Nutzer, nachdem @apadana Anweisungen, wenn Sie bekommen kryptische Fehlermeldungen, stellen Sie sicher, kopieren Sie den code in eigenen python-Datei und führen Sie es mit
(immer noch keine Ahnung, wie ich dachte, dass man aus)
wenn Sie fertig mache, Sie sind jetzt fast im klaren.
machen der letzten änderung: Gmail-API-Fehler aus dem Code-Beispiel - ein bytes-Objekt wie erforderlich ist, nicht 'str'
ersetzen
mit:
nun, es sollte™ arbeiten.
abschließende Hinweise: denken Sie daran, es gibt zwei Instanzen des base64-Kodieren thingie...
verwenden
Methode CreateMessageHtml
und
Methode createMessageWithAttachment
der Grund, warum du musst tun dies ist, weil die Meldung hat den Namen der Variablen 'msg' in CreateMessageHtml, aber Namen 'Nachricht' in createMessageWithAttachment. Da sich die Gründe. Das ist, warum.
InformationsquelleAutor der Antwort Kelvin Wang