Senden Sie eine E-Mail direkt, indem Sie einen MX-Eintrag von Ihrer E-Mail-Adresse in Python abrufen

Überblick

Ich wollte ein Programm erstellen, für das kein Mailserver angegeben werden muss, also habe ich es geschrieben.

Setzen Sie zuerst das Modul zum Abrufen von MX-Datensätzen ein.

pip install dnspython

Lauf

Übergeben Sie die E-Mail-Adresse des Empfängers und des Absenders als Argumente.

python sendmail.py [email protected] [email protected]

Implementierung

sendmail.py

# -*- coding: utf-8 -*-

import smtplib
from email.MIMEText import MIMEText
from email.Header import Header
from email.Utils import formatdate
import sys
import dns.resolver

if __name__ == "__main__":

    argvs = sys.argv

    if len(argvs) != 3:
        print 'Usage arg1 = to_address, arg2 = from_address'
        quit()

    to_address   = argvs[1]
    from_address = argvs[2]
    to_list = to_address.split('@')

    to_address = '<' + to_address + '>'
    from_address = '<' + from_address + '>'

    if len(to_list) < 2:
        print 'format error to_address'
        quit()

    domain = to_list[1]
    mailserver = dns.resolver.query(domain, 'MX')

    if len(mailserver) < 1:
        print 'not found mx recored'
        quit()

    mailserver = mailserver[0].to_text().split(' ')
    mailserver = mailserver[1][:-1]
    print mailserver

    charset = "ISO-2022-JP"
    subject = u"this is Python test mail!"
    text    = u"this is Python test mail!"

    msg = MIMEText(text.encode(charset),"plain",charset)
    msg["Subject"] = Header(subject,charset)
    msg["From"]    = from_address
    msg["To"]      = to_address
    msg["Date"]    = formatdate(localtime=True) 

    smtp = smtplib.SMTP(mailserver)
    smtp.sendmail(from_address,to_address,msg.as_string())
    smtp.close()

Google Mail scheint einige Einschränkungen für Anti-Spam zu haben. Wenn Sie es senden, wird möglicherweise der folgende Fehler angezeigt.

smtplib.SMTPServerDisconnected: Connection unexpectedly closed: [Errno 54] Connection reset by peer

Recommended Posts

Senden Sie eine E-Mail direkt, indem Sie einen MX-Eintrag von Ihrer E-Mail-Adresse in Python abrufen
Senden Sie eine E-Mail mit Python an Spushis Adresse
Senden Sie eine E-Mail mit Excel in Python
Mail senden mit Python (Outlook)
[Python] Senden Sie eine E-Mail aus Google Mail mit einer zweistufigen Authentifizierungseinstellung
[Python] Mail mit Outlook senden
Senden Sie E-Mails mit Python an eine bestimmte E-Mail-Adresse, ohne SMTP festzulegen
Senden Sie mit Python (Python3) E-Mails an mehrere Empfänger.
Senden Sie eine E-Mail mit Amazon SES + Python
Holen Sie sich Ihre eigene IP-Adresse in Python
Senden Sie eine E-Mail vom VirtualBox CentOS8-Server mit Ihrem Google-Konto als Sendeadresse und dem App-Passwort
So senden Sie automatisch E-Mails mit Anhängen mithilfe der Google Mail-API in Python
E-Mail-Anhänge über Ihr Google Mail-Konto mit Python.
Verwenden Sie Python in Ihrer Umgebung von Win Automation
[Python] Mail senden
[Python] Mail senden
Zeigen Sie Bilder in OpenCV von Python mit einer externen USB-Kamera auf Ihrem MacBook an
Importieren Sie Klassen in JAR-Dateien direkt aus dem Python-Skript
Mail per Python senden
Senden Sie Google Mail in Python
Holen Sie sich Ihre Herzfrequenz von der Fitbit-API in Python!
Ich habe versucht, mit Python eine E-Mail von Amazon SES zu senden
Ich habe versucht, das automatische Senden einer E-Mail durch Doppelklicken auf das Symbol [Python] zu ermöglichen