E-Mail (SMTP) Google

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
bmeyer
User
Beiträge: 4
Registriert: Samstag 15. Juni 2019, 13:46

Guten Tag zusammen,

derzeit versuche ich eine E-Mail per SMTP zu senden. Klappt auch soweit.
Leider bekomme ich zwei Sachen nicht hin:

1. Eine Betreffzeile
2. Eine Nachricht (Body) bestehend aus mehreren Variablen

Versenden einer E-Mail mit einem einzigen String klappt wunderbar, doch ich würde gerne mehrere Variablen in "message" eintragen und senden.

str(format(usageinpercent, '.2f'))
warningtext


Hier ein kleiner Schnipsel, an welchem ihr mir eventuell Anregungen geben könnt:

Code: Alles auswählen

    
    
    message =

    server = smtplib.SMTP('smtp.gmail.com', '587')
    server.ehlo()
    server.starttls()
    server.login(gmail_user, gmail_password)

    try:
        server.sendmail(gmail_user, reciever, message)
        print("Erfolgreich.")
    except:
        print("Fehler.")
        
 
Ich bin dankbar über jede Anregung, jeden Tipp, jede Hilfe :)
Hoffe habe meine Frage ausreichend formuliert - ist schon Freitagabend. Sollte etwas fehlen, ergänze ich es gerne noch!

Vielen Dank schonmal.

Schönen Abend noch,
Ben
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

Ich verstehe nicht was du genau willst. Du hast Variablen, die in den Body einfließen sollen, machst das aber nicht, weil? Im Script oben machst du ja genau das nicht, sondern das Script ist einfach schrott.

In der Doku steht ganz einfach beschrieben, wie man sich ein Message-Objekt bauen kann: https://docs.python.org/3/library/email.examples.html
When we say computer, we mean the electronic computer.
Benutzeravatar
__blackjack__
User
Beiträge: 14051
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@bmeyer: Um einen Betreff (und auch einen Absender, und netterweise vielleicht auch einen Empfänger) in der Mail unterzubringen muss `message` einer Nachricht in dem Format sein das in RFC 2822 bzw. RFC 822 beschrieben ist. Python hat dafür `email.message.Message` in der Standardbibliothek.

`format()` liefert eine Zeichenkette – es macht keinen Sinn die noch mal `str()` zu übergeben.

Wenn Du einen Text aus mehreren Teilen zusammensetzen willst, dann musst Du eben genau das tun. Zum Beispiel mit Zeichenkettenformatierung mit der `format()`-*Methode* auf Zeichenketten (*nicht* der `format()`-*Funktion*) oder ab Python 3.6 mit f-Zeichenkettenliteralen. Man könnte auch eine Vorlage erstellen und mit `string.Template` arbeiten. Oder mit einer externen Bibliothek für Templates wie Jinja2.

Die Fehler”behandlung” in dem Code muss ganz dringend weg. Wenn man Ausnahmen nicht *sinnvoll* behandeln kann, dann lässt man es einfach bleiben. Man unterdrückt auf keinen Fall sinnvolle Ausgaben die einem bei der Fehlersuche helfen können.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten