Par exemple, vous souhaitez envoyer un rappel à vos clients pour leurs factures restantes et vous avez toutes les données liées aux clients comme leurs numéros de téléphone, leur adresse, l'âge, etc. Programme simple dans Python pour faire automatiquement cela pour vous. Dans ce tutoriel, nous découvrirons comment fonctionne le protocole de messagerie et comment vous pouvez automatiser le processus pour gagner votre temps précieux.
Le protocole de transfert de courrier simple (SMTP) est un équivalent informatisé de votre service postal. Il s'agit d'un protocole qui fonctionne sur la couche d'application d'un réseau TCP / IP. C'est un protocole standard pour envoyer et recevoir des e-mails sur Internet. Le processus de transfert de message.
Par exemple, vous avez un compte Gmail et vous souhaitez envoyer un e-mail à votre ami sur son compte Yahoo. Vous écrivez un e-mail et appuyez sur Send, mais le processus backend est un peu compliqué, et pour comprendre ce processus, vous devrez d'abord comprendre SMTP. Votre client de messagerie SMTP envoie d'abord Hélicoptère (ou Ehlo) Pour le serveur Gmail, vous pouvez dire que cette commande ou cet en-tête est équivalent de Héberger En-tête dans le protocole HTTP et est utilisé pour identifier le serveur à l'aide du nom de domaine. Après HELO ou EHLO, le client s'authentifie au serveur avec le nom d'utilisateur et le mot de passe donné en utilisant Authentification commande. Ensuite, il spécifie l'adresse e-mail de l'expéditeur et du destinataire, puis le corps du message et envoie un e-mail au serveur Gmail. Gmail Server confirmera d'abord que si l'adresse e-mail du destinataire sur Yahoo existe ou non, il enverra l'e-mail à Yahoo Server où le destinataire peut récupérer ses e-mails à partir de.
Smtplib
SMTPLIB est une bibliothèque Python qui peut être utilisée comme client SMTP tout comme votre Gmail, Yahoo, Thunderbird ou tout autre client de messagerie et peut être utilisé pour envoyer des e-mails. Nous pouvons effectuer toutes les tâches en utilisant le client SMTPLIB que nous pouvons faire avec ceux qui ont une interface utilisateur graphique.
Il vient par défaut dans Python, au cas où vous ne l'avez pas, puis vous pouvez installer en utilisant la commande suivante.
ubuntu @ ubuntu: ~ $ pip install smtplib
Ou dans Python3
ubuntu @ ubuntu: ~ $ pip install smtplib
Écrire votre premier e-mail avec Python
Dans ce tutoriel, j'utiliserai un compte Gmail comme expéditeur, je vais également utiliser la console Python, donc il me sera plus facile d'expliquer chaque ligne de code étape par étape. Pour commencer, nous devons permettre à notre accès Gmail à des applications moins sécurisées.
Alors connectez-vous à votre compte Gmail, puis accédez aux paramètres du compte.
Assurez-vous maintenant que l'accès pour les applications moins sécurisées est activée.
Ouvrez maintenant votre console Python et commencez à écrire votre premier e-mail à l'aide de Python
ubuntu @ ubuntu: ~ $ python
Python 2.7.16 (par défaut, 7 octobre 2019, 17:36:04)
[GCC 8.3.0] sur Linux2
Tapez «Help», «Copyright», «Crédits» ou «Licence» pour plus d'informations.
// importe la bibliothèque SMTP
>>> Importer Smtplib
// Connectez-vous au serveur Gmail avec le nom de domaine et le numéro de port (ce paramètre diffère pour
Chaque fournisseur de messagerie, veuillez jeter un œil à la table ci-dessous)
>>> mailoBj = smtplib.SMTP ('SMTP.Gmail.com ', 587)
// Dites bonjour au serveur
>>> MailoBj.ehlo ()
(250, 'SMTP.Gmail.com à votre service, [103.255.4.246] \ nSize35882577 \ n8bitmime \ nstarttls \
NenhancedStatudes \ npipelining \ nchunking \ nsmtputf8 ')
// Le port 587 signifie que nous utilisons la connexion TLS cryptée, alors démarrez TLS crypté
Communication utilisant starttls (), afin que nos informations d'identification et nos messages ne soient pas reniflés
>>> MailoBj.startTls ()
(220, '2.0.0 prêt à démarrer TLS ')
// Connectez-vous à votre compte Gmail à l'aide de l'e-mail et du mot de passe
>>> MailoBj.connexion ('expéditeur @ gmail.com ',' S3CR3T_P4SSW0RD ')
(235, '2.7.0 accepté ')
// Spécifiez l'adresse e-mail de l'expéditeur et du destinataire et le contenu e-mail
>>> MailoBj.sendmail ('expéditeur @ gmail.com ',' usamaazad13141 @ gmail.com ',' Sujet:
Bonjour le monde! \ n Hello World! Ceci est mon premier e-mail Hello Hello World dans Python ')
// Fermer la connexion au serveur Gmail
>>> MailoBj.arrêter()
(221, '2.0.0 Clôture Connexion B6SM4519863LFI.72 - gsmtp ')
Dans le programme d'échantillons ci-dessus, remplacez le contenu donné par le vôtre. Si vous n'êtes pas un utilisateur de Gmail, vous pouvez utiliser le serveur de messagerie de votre fournisseur. Voici la liste des noms de domaine et des ports de certains fournisseurs de courrier communs.
Nom | Nom de domaine du serveur | Port |
Gmail | smtp.Gmail.com | 587 |
Outlook / Hotmail | SMTP-MAIL.perspectives.com | 587 |
Yahoo Mail | smtp.poster.yahoo.com | 587 |
Verizon | smtp.Verizon.filet | 465 |
Comcast | smtp.comcast.filet | 587 |
Quelques mots sur IMAP
Nous venons donc d'étudier que SMTP est utilisé pour envoyer des e-mails, mais ce qui est IMAP (Internet Access Messageing Protocol) pour? SMTP ne peut pas être utilisé pour rechercher et recevoir des e-mails à partir du serveur, IMAP ou POP3 Le protocole est utilisé à cette fin.
Imapclient, imaplib et pyzmail
Il existe deux grandes bibliothèques en Python qui peuvent être utilisées comme client IMAP pour trouver, récupérer et supprimer les e-mails du serveur de messagerie. Python a défaut imaplib bibliothèque mais une autre bibliothèque externe imapclient est plus efficace et facile à utiliser. Dans ce tutoriel, nous utiliserons imapclient Pour récupérer les e-mails du serveur de messagerie.
Le problème avec imapclient est qu'il récupère les e-mails du serveur de messagerie au format brut. Alors, nous aurons besoin pyzmail Bibliothèque en tant que analyseur pour une sortie conviviale. Pour installer les deux bibliothèques, tapez
ubuntu @ ubuntu: ~ $ sudo pip install imapclient
ubuntu @ ubuntu: ~ $ sudo pip install pyzmail
Obtenir vos e-mails à partir du serveur de messagerie
Maintenant, nous apprendrons à rechercher et à télécharger des e-mails depuis le serveur de messagerie à l'aide d'IMAPClient. Nous utiliserons IMAPClient pour rechercher et télécharger des e-mails depuis le serveur, puis nous utiliserons Pyzmail pour analyser ce contenu brut. Faisons
// Importer la bibliothèque IMAPClient
>>> Importer IMAPClient
// Connectez-vous au serveur IMAP de Gmail
>>> obj = imapclient.IMAPCLIENT ('IMAP.Gmail.com ', ssl = true)
// Connectez-vous à votre compte de messagerie en utilisant vos informations d'identification
>>> obj.Login ('SecretAccount @ gmail.com ',' s3cr4tp4ss ')
'SecretAccount @ gmail.com authentifié (succès) '
// Sélectionnez le dossier de message à lire I.Ebox de réception, brouillons, courriers envoyés
>>> obj.select_folder ('inbox', readonly = true)
'Exists': 830, 'permanentflags': (), 'highestmodseq': 112999, 'uidnext': 931,
'Flags': ('\\ Réponction', '\\ Flagged', '\\ Draft', '\\ Deleted', '\\ voir',
'$ Notphishing', '$ phishing'), 'uidvalidity': 1, 'read only': ["], 'récent': 0
// Recherchez vos messages dans votre boîte de réception ou appliquez un filtre, le filtre ci-dessous s'affichera
vous les mails reçus après le 25-oct-2019
>>> mail_ids = obj.Search (['depuis', '25 -oct-2019 '])
>>> Mail_ids
[919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930]
// La liste «Mail_ids» contient une liste des identifiants e-mail reçus depuis le 25-oct-2019,
Vous pouvez télécharger un e-mail à l'aide de la fonction de récupération imapclient.
>>> raw_mail = obj.Fetch ([919], ['corps []', 'Flags'])
// Maintenant, le contenu de la variable Raw_mail est en format brut, il ne peut pas être affiché sur le
Écran directement, nous aurions donc besoin d'un analyseur pour analyser ce contenu pour une sortie conviviale
>>> importer pyzmail
>>> message = pyzmail.Pyzmessage.Factory (Raw_mail [919] ['Body []'])
// maintenant le courrier électronique est analysé et stocké en variable de message, pour obtenir le sujet de
l'e-mail, utilisez la fonction get_subject
>>> Message.get_subject ()
u'rurez vos compétences cet Halloween avec 25% de réduction '
// De même, vous pouvez voir les détails de l'expéditeur
>>> Message.get_address ('from')
[(u'usama azad ',' usamaazad13141 @ gmail.com ')]
>>> Message.get_address ('to')
[(u'SecretAccount @ gmail.com ',' SecretAccount @ gmail.com ')]
// Pour obtenir le corps de l'e-mail, tapez
>>> Message.text_part.get_payload ().décoder (message.text_part.Charset)
u "salut! Profitez d'un plat de 25% sur nos cours premium »
Si vous avez un compte dans un autre fournisseur de services de messagerie autre que Gmail, vous pouvez vous connecter à leur serveur IMAP. Voici la liste des noms de domaine IMAP de certains fournisseurs de courrier célèbres.
Fournisseur | Nom de domaine pour le serveur IMAP |
Yahoo | iMap.poster.yahoo.com |
Hotmail / Outlook | imap-met.perspectives.com |
Verizon | entrant.Verizon.filet |
Comcast | iMap.comcast.filet |
AT&T | iMap.poster.att.filet |
Suppression de votre e-mail du serveur IMAP
Semblable à la recherche et à la récupération des e-mails du serveur, vous pouvez également supprimer les e-mails de votre serveur de messagerie à l'aide de leur UID. Suivez simplement les étapes données
// Pour supprimer un e-mail, vous devez transformer uniquement en «faux» pour obtenir un accès en écriture à votre
e-mails
>>> obj.select_folder ('inbox', readonly = false)
>>> mail_ids = obj.Search (['depuis', '25 -oct-2019 '])
>>> Mail_ids
[919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930]
// Fournit un e-mail UID ou une liste d'UIDS de messagerie, après avoir exécuté la commande ci-dessous,
Votre e-mail sera disparu de la boîte de réception.
>>> obj.Delete_Messages (919)
919: ('\\ voir', '\\ supprimé')
// Cette commande supprimera en permanence vos e-mails du serveur de messagerie
>>> obj.effacer()
('Succès', [])
https: // techtopz.com / build-a-birthday-reminder-application in-python-on-mac /
Faire votre propre rappel d'anniversaire
Vous avez des anniversaires de vos amis dans les prochains mois et vous voulez leur souhaiter leur anniversaire. Mais vous avez beaucoup de travail dans votre bureau et il est possible que vous oubliez de leur souhaiter. Ainsi, cette tâche peut être effectuée automatiquement à l'aide de Python. Voici le code pour effectuer cette tâche.
// Importation de modulesMaintenant, nous faisons un `` anniversaire_file '', dans lequel nous enregistrons des noms, des adresses e-mail et leur date de naissance. Ceci est un fichier texte simple et ressemble à ceci.
Explication
Nous allons lire ce fichier à l'aide du script Python et vérifier à qui l'anniversaire arrive et leur souhaitons. Tout d'abord, nous importerons des modules. Le module DateTime a des fonctions qui nous donnent la date et l'heure actuelles et bien d'autres. Mais nous ne l'utiliserons que pour trouver la date et l'heure actuelles. Le module SMTPLIB est utilisé pour envoyer du courrier et a été expliqué ci-dessus. Le module RE a des fonctions qui sont utilisées pour trouver une expression régulière à partir d'une chaîne.
Dans ce script, nous définissons la fonction 'Send_mail', qui envoie le courrier au 'reciever_mail_address', dont le nom est 'name'. Les deux arguments sont transmis à la fonction du corps principal de MSG. Dans le corps principal du script, nous verrons comment nous trouvons 'reciever_mail_address' et 'name'.
L'envoi d'e-mails à l'aide de SMTPLIB a été expliqué ci-dessus, vous pouvez donc le lire et il ne sera pas discuté ici.
Dans le corps principal, nous allons au répertoire où nous avons sauvé `` anniversaire_file '' using 'OS.chdir () '. Ensuite, nous avons une `` boucle '', ce qui est toujours vrai, donc il vérifiera en continu l'anniversaire. Maintenant, nous obtenons la date et l'heure actuelles et l'enregistrons dans la variable «aujourd'hui». Ça ressemble à ça.
2019-11-01 16:19:07.144925
Nous extraire nous extraire l'année, le mois, le jour, l'heure, les minutes et les secondes en utilisant des indices de ces quantités. Après cela, nous ouvrirons Birthday_file dans un objet 'Birthday_file' en mode lecture, afin que nous ne puissions le lire que. Nous allons maintenant enregistrer toutes les lignes de ce fichier dans la liste des lignes. 'anniversaire_file.ReadLines () «Enregistrera chaque ligne dans la liste des« lignes ». Après cela, nous fermerons Birthday_file en utilisant 'anniversaire_file.FONCTION () '.
Maintenant, nous allons lire chaque ligne une par une en utilisant pour Loop. Dans chaque ligne, les données d'une seule personne sont disponibles dans `` Birthday_file '', nous lisons donc les données d'une seule personne à la fois de cette boucle.
Après cela, nous extrairera la date de naissance, l'adresse e-mail et le nom de la personne à l'aide du module RE. Comme nous avons écrit la date dans le format suivant
Yyyy-mm-dd
Nous allons donc faire une expression régulière «DateEx» qui trouve ce format dans la ligne.
concernant.compile (r ”\ d 4 - \ d 2 - \ d 2”)
Commande ci-dessus Trouver une chaîne qui a «4 chiffres» suivi de «-« puis «2 chiffres» suivis de «-» et «2 chiffres». Cela nous donnera la date de naissance de la personne afin que nous extraire Birth_day et Birth_Month de cette expression.
De même, nous trouverons l'adresse e-mail en utilisant des expressions régulières. Après cela, nous comparerons les anniversaire_month et current_month et anniversaire_day et current_day. Si ces conditions sont remplies, nous enverrons l'e-mail d'anniversaire en utilisant la fonction 'Send_mail' à Exact '08: 00 '.
Maintenant, nous nous assurerons que ce script Python s'exécute à chaque fois. Pour ce faire, nous ajouterons cette tâche à Crontab. Crontab, dans Linux, est utilisé pour effectuer des tâches automatiquement. Ce que nous devons faire, c'est simplement ajouter la tâche à Crontab. Pour ce faire, suivez les étapes données.
ubuntu @ ubuntu: ~ $ crontab -e
@reboot python path_to_the_script
Les commandes ci-dessus permettra à votre système d'exécuter le script Python chaque fois que vous redémarrez votre système. De cette façon, votre système exécutera le script Python à chaque fois lorsque votre système sera allumé.