Ich möchte mit Python eine E-Mail von Google Mail senden.

Hallo allerseits, lange nicht gesehen. Nach und nach werde ich anfangen zu posten.

Dieses Thema

Melden Sie sich mit Python bei Google Mail an und senden Sie eine E-Mail.

Referenz

~ Senden von E-Mails mit Google Mail mit Python ~

Ablauf des Mailversands

Erstellen und senden Sie MIME

Es ist wirklich einfach.

Wenn der obige Durchfluss zerlegt wird, sind drei Schritte erforderlich.

  1. Verfassen Sie eine Nachricht mit der MIMEText-Klasse
  2. Melden Sie sich bei Google Mail an und senden Sie

1. Verfassen Sie eine Nachricht mit der MIMEText-Klasse

create_msg.py


from email.mime.text import MIMEText


def create_msg(from_email, to_email):
    #Der Inhalt der E-Mail
    subject = "Der heutige Todo"
    message = '''
        <ul>
            <li>Über meinen Text</li>
            <li>Über SMTP</li>
            <li>Web-Technologie-Buch</li>
            <li>Über das MVC-Modell</li>
        </ul>
    '''
    #Erklärung 1
    msg = MIMEText(message, "html")
    msg["Subject"] = subject
    msg["To"] = to_email
    msg["From"] = from_email

    return msg

Kommentar

Erklärung 1

*class email.mime.text.MIMEText(_text, _subtype='plain', _charset=None, , policy=compat32) Dies ist das Argument der MINEText-Klasse. Dieses Mal werden "_text" und "_subtype" festgelegt. "_text" wird auf die Nachricht gesetzt, die Sie dieses Mal senden möchten, und da Sie sie im HTML-Format anzeigen möchten, wird "html" an "_subtype" übergeben.

Danach werden Betreff, Ziel und Quelle an diese MIMEText-Klasse übergeben. Damit ist die Nachrichtenzusammensetzung zum Senden abgeschlossen.

Referenz

email.mine: Mail- und MIME-Objekte von Grund auf neu erstellen

2. Melden Sie sich bei Google Mail an

gmail.py


    #Erklärung 1
    gmail = smtplib.SMTP("smtp.gmail.com", 587)
    #Zur Bestätigung, wenn die Authentifizierung fehlschlägt
    gmail.set_debuglevel(True)
    
    gmail.ehlo()
    if gmail.has_extn('STARTTLS'):
        #Wechseln Sie zur verschlüsselten Kommunikation
        gmail.starttls()
    gmail.ehlo()
    #Erklärung 2
    gmail.login(from_email, from_password)
    #Eine E-Mail senden
    gmail.send_message(msg)

Kommentar

Erklärung 1

Erstens SMTP class smtplib.SMTP(host='', port=0, local_hostname=None, [timeout, ]source_address=None) Geschrieben in. SMTP Protocol Client

Ich werde diesmal also Google Mail verwenden host='smtp.gmail.com' port=587 Es wurde gemacht. In der folgenden Google-Hilfe erfahren Sie, woher diese stammen. スクリーンショット 2020-03-17 11.47.29.png Google-Hilfe

Erklärung 2

Dann melden Sie sich an. Sie können sich mit gmail.login anmelden (from_email, from_password). from_email Geben Sie Ihre E-Mail-Adresse ein. Geben Sie für from_password Ihr Google Mail-Passwort ein. Hier gibt es eine Falle.

Standardmäßig kann Google Mail keine E-Mails von Ihrem lokalen Python senden, da Google Mail den DNS der Quell-IP-Adresse umkehrt und die Verbindung ablehnt, wenn die Domain nicht gefunden wird. Aus diesem Grund ist es erforderlich, ** "Zugriff auf das Konto von weniger sicheren Apps aus zulassen" ** in den Kontoeinstellungen im Voraus zu aktivieren. Dies stellt ein Sicherheitsrisiko dar. Wir empfehlen daher, ein separates Lernkonto zu erstellen.

Einstellmethode

Gehen Sie in Ihrem Google-Konto (https://myaccount.google.com/) zu "Sicherheit", um den Zugriff auf weniger sichere Apps zu ermöglichen.

Außerdem variieren Host- und Portnummern je nach Anbieter.

Anbieter SMTP-Servername
Gmail smtp.gmail.com
Outlook.com/Hotmail.com smtp-mail.outllok.com
Yahoo Mail smtp.mail.yahoo.com
AT&T smtp.mail.att.net(port = 465)
Comcast smtp.comcast.net
Verizon smtp.verizon.net(port = 465)

Ganzer Quellcode

main.py


from email.mime.text import MIMEText
import smtplib


def send_email(email):
    #Ihr Konto
    from_email="Ihre Google Mail-Adresse"
    from_password="Passwort zum Anmelden bei Google Mail"

    #Ziel
    to_email = email

    #Verfassen Sie eine Nachricht
    msg = create_msg(from_email, to_email)

    gmail = smtplib.SMTP("smtp.gmail.com", 587)
    #Zur Bestätigung, wenn die Authentifizierung fehlschlägt
    gmail.set_debuglevel(True)
    
    gmail.ehlo()
    if gmail.has_extn('STARTTLS'):
        #Wechseln Sie zur verschlüsselten Kommunikation
        gmail.starttls()
    gmail.ehlo()
    #Erklärung 2
    gmail.login(from_email, from_password)
    #Eine E-Mail senden
    gmail.send_message(msg)


def create_msg(from_email, to_email):
    #Der Inhalt der E-Mail
    subject = "Der heutige Todo"
    message = '''
        <ul>
            <li>Über meinen Text</li>
            <li>Über SMTP</li>
            <li>Web-Technologie-Buch</li>
            <li>Über das MVC-Modell</li>
        </ul>
    '''
    #Erklärung 1
    msg = MIMEText(message, "html")
    msg["Subject"] = subject
    msg["To"] = to_email
    msg["From"] = from_email

    return msg


if __name__ == '__main__':
    to_addr = 'E-Mail-Adresse der Person, die Sie senden möchten'
    send_email(to_addr)

Liste der Referenzmaterialien

Fehler beim Versuch, E-Mails aus dem Programm mit Google Mail zu senden email.mine: Mail- und MIME-Objekte von Grund auf neu erstellen SMTP Protocol Client Google-Hilfe

Recommended Posts

Ich möchte mit Python eine E-Mail von Google Mail senden.
Ich möchte ein Glas aus Python verwenden
[Python] Ich möchte 7DaysToDie von Discord aus verwalten! 1/3
Ich möchte Ceres Solver aus Python verwenden
[Python] Ich möchte 7DaysToDie von Discord aus verwalten! 2/3
Ich möchte C ++ - Code aus Python-Code erstellen!
Ich möchte mit Python debuggen
Ich möchte viele Prozesse von Python aus starten
Ich möchte eine Nachricht von Python an LINE Bot senden
Von Python bis zur Verwendung von MeCab (und CaboCha)
Ich möchte eine Python-Umgebung erstellen
Ich möchte Protokolle mit Python analysieren
Ich habe versucht, die UnityCloudBuild-API von Python zu verwenden
Ich möchte mit aws mit Python spielen
Ich möchte aus verschiedenen Sprachen eine Verbindung zu PostgreSQL herstellen
Ich möchte Dunnetts Test in Python machen
Ich möchte DB mit Djangos ORM von einer externen Anwendung aus betreiben
Änderungen von Python 3.0 zu Python 3.5
E-Mail-Anhänge über Ihr Google Mail-Konto mit Python.
Ich möchte mich mit Schlüsselwortargumenten von Python merken
Ich möchte mit Python ein Fenster erstellen
Ich möchte ein Spiel mit Python machen
Ich möchte CSV-Dateien mit Vega-Lite visualisieren!
[Python-Memo] Ich möchte eine zweistellige Hexadezimalzahl aus einer Dezimalzahl erhalten
Ich möchte verschachtelte Dicts in Python zusammenführen
Ich möchte Passungen aus meinem Kopf machen
Ich möchte Temporäres Verzeichnis mit Python2 verwenden
#Unresolved Ich möchte Gobject-Introspection mit Python3 kompilieren
Ich möchte APG4b mit Python lösen (Kapitel 2)
Ich habe versucht, mit django eine E-Mail zum Abschluss der Registrierung von Google Mail zu senden.
[Ich möchte Bilder mit Tensorflow klassifizieren] (2) Lassen Sie uns Bilder klassifizieren
Was ich beim Update von Python 2.6 auf 2.7 gemacht habe
Ich möchte die Produkte verkaufen, die ich durch Python Scraping Mercari aufgelistet habe
Ich möchte mit Python in eine Datei schreiben
Ich möchte den Fortschritt in Python anzeigen!
Ich möchte eine Webanwendung mit React und Python Flask erstellen
Ich möchte Google Mail mit Python senden, kann dies jedoch aufgrund eines Fehlers nicht
Ich möchte Variablen / Funktionen / Klassen externer Dateien von Python abrufen / ausführen
So senden Sie automatisch E-Mails mit Anhängen mithilfe der Google Mail-API in Python
Ich habe versucht, Python-Code aus .Net mit Pythonnet auszuführen (Hallo World Edition)
Ich möchte in Python schreiben! (1) Überprüfung des Codeformats
Ich möchte den Dateinamen von DataLoader sehen
Selbst Anfänger möchten sagen "Ich verstehe Python voll und ganz"
Ich möchte eine Variable in einen Python-String einbetten
Ich möchte Timeout einfach in Python implementieren
Ich möchte Bilder von Katzen von Instagram erkennen
Ich möchte einen Python-Generator viele Male iterieren
Ich möchte schnell UUID generieren (Gedenknotiz) ~ Python Edition ~
Ich möchte in Python schreiben! (2) Schreiben wir einen Test
PUSH-Benachrichtigung von Python an Android mithilfe der Google-API
Auch mit JavaScript möchte ich Python `range ()` sehen!
MessagePack-Aufruf von Ruby to Python-Methoden (oder Python to Ruby-Methoden) mithilfe von RPC
Ich wollte die Python-Bibliothek von MATLAB verwenden
Ich möchte eine Datei mit Python zufällig testen
Ich möchte mit Python-Datenklasse nach hinten erben
Ich möchte mit einem Roboter in Python arbeiten.
[Python] Ich möchte aus einer verschachtelten Liste einen Taple machen
Ich möchte in Python schreiben! (3) Verwenden Sie Mock
Ich möchte Lambda mit Python auf Mac AWS!