Envoyez un e-mail directement en extrayant un enregistrement MX de votre adresse e-mail en Python

Aperçu

Je voulais créer un programme qui ne nécessite pas de spécifier un serveur de messagerie, alors je l'ai écrit.

Insérez d'abord le module pour extraire les enregistrements MX.

pip install dnspython

Courir

Transmettez l'adresse e-mail du destinataire et de l'expéditeur comme arguments.

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

la mise en oeuvre

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()

Gmail semble avoir des restrictions sur l'anti-spam, et si vous l'envoyez, vous pouvez obtenir l'erreur suivante.

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

Recommended Posts

Envoyez un e-mail directement en extrayant un enregistrement MX de votre adresse e-mail en Python
Envoyez un email à l'adresse de Spushi avec python
Envoyer un e-mail avec Excel en pièce jointe en Python
Envoyer des e-mails avec Python (Outlook)
[Python] Envoyez un e-mail depuis Gmail avec le paramètre d'authentification en deux étapes
[Python] Envoyez des e-mails avec Outlook
Envoyer des e-mails à une adresse e-mail spécifique avec python sans paramétrer SMTP
Envoyer des e-mails à plusieurs destinataires avec Python (Python3)
Envoyer un e-mail avec Amazon SES + Python
Obtenez votre propre adresse IP en Python
Envoyez un e-mail depuis le serveur VirtualBox CentOS8 en utilisant votre compte Google comme adresse d'envoi et en utilisant le mot de passe de l'application
Pour envoyer automatiquement des e-mails avec des pièces jointes à l'aide de l'API Gmail en Python
Pièces jointes par e-mail à l'aide de votre compte gmail avec python.
Utilisez Python dans votre environnement depuis Win Automation
[Python] Envoyer un e-mail
[Python] Envoyer un e-mail
Afficher des images dans OpenCV à partir de Python à l'aide d'une caméra USB externe sur votre MacBook
Importez des classes dans des fichiers jar directement à partir d'un script Python
Envoyer des e-mails par Python
Envoyer Gmail en Python
Obtenez votre fréquence cardiaque à partir de l'API fitbit en Python!
J'ai essayé d'envoyer un e-mail d'Amazon SES avec Python
J'ai essayé de rendre possible l'envoi automatique d'un e-mail en double-cliquant simplement sur l'icône [Python]