Envoi d'un e-mail dans Python

Envoi d'un e-mail dans Python
L'envoi d'un e-mail est l'une des tâches les plus courantes que je dois effectuer dans les applications Web et autres projets que je crée. Avec Python, c'est une chose assez simple et facile à faire. Même lorsque nous devons utiliser certains modèles prédéfinis, Python nous aide à remplacer les valeurs d'espace réservé par des données réelles afin que l'e-mail final soit élégant et rempli de détails qui rend mon client heureux.

Dans cette leçon, je partagerai le script que j'utilise pour envoyer des e-mails aux utilisateurs des applications que je fais et plus.

Ce que nous ferons?

Nous créerons un programme Python simple qui fera ce qui suit:

  • Utilisez le fichier de modèle que nous créons pour la conception des e-mails. Ce ne sera qu'un fichier texte avec des valeurs d'espace réservé.
  • Obtenez le nom et l'e-mail de la personne à partir d'un autre fichier texte que nous faisons.

Ces points rapprochent ce programme d'une utilisation réelle de l'envoi d'e-mails dans vos applications. Commençons.

Dossier pour les e-mails

Le fichier qui contient les e-mails pour les utilisateurs ressemblera à ceci:

Shubham Shubham.code @ gmail.com

Ceci n'est qu'un fichier texte simple qui contient le nom et l'e-mail de l'utilisateur séparés par l'espace. Plusieurs e-mails ont été placés avec les données de chaque utilisateur dans une nouvelle ligne. Nous avons nommé ce fichier utilisateurs.SMS.

Utilisation du modèle

Définissons également rapidement le modèle que nous utiliserons dans notre script pour remplacer les valeurs:

Bonjour $ Person_name,
Nous avons envoyé cet e-mail à l'aide du module Python SMTPLIB. Cool, à droite?
Passez une bonne journée à venir!
Acclamations

Nous avons utilisé une chaîne de modèle $ Person_name qui sera remplacé par le nom de la personne que nous obtenons des utilisateurs.Fichier TXT lors de l'envoi de l'e-mail.

Obtenir des données utilisateur à partir du fichier

La première étape pour envoyer un e-mail à un utilisateur est d'identifier ce où nous voulons envoyer les e-mails à. Écrivons une fonction Python qui acceptera un nom de fichier et renvoie les ID de nom et d'e-mail des utilisateurs américains où les e-mails doivent être envoyés:

def get_users_data (file_name):
user_name = []
user_email = []
avec open (file_name, mode = 'r', encoding = 'utf-8') en tant qu'User_file:
pour user_info dans user_file:
nom d'utilisateur.ajouter (user_info.Split () [0])
user_email.ajouter (user_info.Split () [1])
return user_name, user_email

Avec cette fonction, nous renvoyons simplement les noms et les e-mails de l'utilisateur que nous obtenons le fichier.

Obtenir l'objet de modèle

Maintenant, nous pouvons analyser notre modèle et obtenir un objet de modèle à partir du fichier texte que nous avons fait:

def read_template (file_name):
avec open (file_name, 'r', encoding = 'utf-8') comme msg_template:
msg_template_content = msg_template.lire()
modèle de retour (msg_template_content)

Avec cela, nous récupérerons un objet de modèle que nous pouvons utiliser pour analyser le contenu du fichier et effectuer les remplacements nécessaires pour les chaînes de modèle comme le nom d'un utilisateur.

Comment l'envoi des e-mails est effectué?

Maintenant que nous sommes prêts avec la conception du modèle et les données de l'utilisateur, nous devons comprendre comment un e-mail est réellement envoyé à l'utilisateur:

  • Créez une connexion SMTP avec les informations d'identification de connexion pour le compte de l'expéditeur
  • Construisez un en-tête en plusieurs parties avec des informations avec, à et les champs de sujet
  • Construire le corps du message qui doit être envoyé
  • Envoyer l'e-mail avec l'objet de connexion SMTP

Configuration de la connexion SMTP

Définissons enfin la fonction qui enverra l'e-mail aux utilisateurs désignés. Voici la fonction:

def main ():
user_name, user_email = get_users_data ('utilisateurs.txt ') # lire les détails de l'utilisateur
Message_Template = read_template ('Message.SMS')
# configurer le serveur SMTP
SMTPLIB_SERVER = SMTPLIB.Smtp (host = 'smtp.Gmail.com ', port = 587)
SMTPLIB_SERVER.startTls ()
SMTPLIB_SERVER.connexion (send_from, email_pwd)
# Obtenez chaque détail de l'utilisateur et envoyez l'e-mail:
Pour le nom, e-mail dans zip (user_name, user_email):
multipart_message = mimeMultupart () # Créez un message
# Ajouter le nom réel de la personne au modèle de message
msg = message_template.substitut (Person_name = nom.titre())
# Imprime le corps du message pour notre bien
imprimer (msg)
# Configuration des paramètres du message
multipart_message ['from'] = send_from
multipart_message ['to'] = e-mail
multipart_message ['sujet'] = "Linuxhint Email"
# Ajouter le corps du message
multipart_message.attacher (mimeText (msg, «plaine»))
# Envoyez le message via le serveur configuré plus tôt.
SMTPLIB_SERVER.send_message (multipart_message)
del multipart_message
# Terminer la session SMTP et fermer la connexion
SMTPLIB_SERVER.arrêter()

Dans la fonction ci-dessus, nous avons suivi chaque étape que nous avons indiquée dans la section précédente. Nous avons construit la connexion SMTP et l'avons utilisée pour envoyer l'e-mail.

Programme complet

Dans la dernière section, jetons un coup d'œil au programme complet qui peut être utilisé pour envoyer l'e-mail à l'utilisateur désigné:

importer smtplib
à partir du modèle d'importation de chaîne
de l'email.mime.Importation en multipar
de l'email.mime.Import de texte mimeText
Send_from = 'my-email-here'
Email_pwd = 'my-password-here'
def get_users_data (file_name):
user_name = []
user_email = []
avec open (file_name, mode = 'r', encoding = 'utf-8') en tant qu'User_file:
pour user_info dans user_file:
nom d'utilisateur.ajouter (user_info.Split () [0])
user_email.ajouter (user_info.Split () [1])
return user_name, user_email
def read_template (file_name):
avec open (file_name, 'r', encoding = 'utf-8') comme msg_template:
msg_template_content = msg_template.lire()
modèle de retour (msg_template_content)
def main ():
user_name, user_email = get_users_data ('utilisateurs.txt ') # lire les détails de l'utilisateur
Message_Template = read_template ('Message.SMS')
# configurer le serveur SMTP
SMTPLIB_SERVER = SMTPLIB.Smtp (host = 'smtp.Gmail.com ', port = 587)
SMTPLIB_SERVER.startTls ()
SMTPLIB_SERVER.connexion (send_from, email_pwd)
# Obtenez chaque détail de l'utilisateur et envoyez l'e-mail:
Pour le nom, e-mail dans zip (user_name, user_email):
multipart_message = mimeMultupart () # Créez un message
# Ajouter le nom réel de la personne au modèle de message
msg = message_template.substitut (Person_name = nom.titre())
# Imprime le corps du message pour notre bien
imprimer (msg)
# Configuration des paramètres du message
multipart_message ['from'] = send_from
multipart_message ['to'] = e-mail
multipart_message ['sujet'] = "Linuxhint Email"
# Ajouter le corps du message
multipart_message.attacher (mimeText (msg, «plaine»))
# Envoyez le message via le serveur configuré plus tôt.
SMTPLIB_SERVER.send_message (multipart_message)
del multipart_message
# Terminer la session SMTP et fermer la connexion
SMTPLIB_SERVER.arrêter()
Si __Name__ == '__MAIN__':
principal()

Lorsque nous exécutons ce programme avec un ID Gmail, vous pourriez faire face à un problème comme ceci:

Erreur Gmail SMTP


En effet. Pour cela, vous devrez peut-être désactiver la connexion de sécurité dans votre compte Gmail. Découvrez comment faire cela pour Gmail ici.

Conclusion

Dans cette leçon, nous avons examiné comment nous pouvons envoyer des e-mails à l'aide de Python smtplib module.