Académique Documents
Professionnel Documents
Culture Documents
"""
Vous travaillez dans une entreprise qui envoie des rapports quotidiens à ses
clients par courrier électronique. L'objectif de ce projet est d'automatiser le
processus d'envoi de ces rapports par courrier électronique.
Utilisez une boucle for pour parcourir la liste des destinataires et envoyer
l'e-mail et la pièce jointe.
Vous pouvez également créer un fichier journal pour garder une trace des
courriels qui ont été envoyés et des erreurs qui ont pu se produire au cours du
processus d'envoi.
"""
Résolution
-----------
L'envoie des mails peut fonctionner avec n'importe quel compte email, mais nous
allons utilser un compte gmail.
A. PREALABLES
1. Créez compte gmail (si vous n'en avez pas) et/ou connectez-vous depuis un
navigateur.
2. Cliquez sur votre compte et puis Manage your account
3. Dans la nouvelle fenêtre, cliquez sur Security
4. Vérifiez que la validation en deux étappes (two factor authetication) est
activée. Si cela n'est pas activé, suivez les étapes et activez le two factor
authentication pour votre compte.
5. Une fois cela est fait, cliquez sur "Mots de pass des des applications" ou "App
passwords"
import email_config
Nous allons définir deux fonctions. Une fonction pour l'envoie d'un email et un
autre pour l'envoie d'un mail à plusieur destinataires.
Première fonction:
with smtplib.SMTP(email_config.server_config,
email_config.server_port_config) as s:
s.starttls()
s.login(email_config.email_address_config, email_config.pwd_config)
s.send_message(body)
msg = EmailMessage()
msg["Subject"] = subject
msg["From"] = "Votre nom"
msg["To"] = recipient
msg.set_content(body)
Excécutons et observons les résultats. Votre email est de plus en plus claire.
Vous pouvez aussi écrire votre message sur plusieurs lignes.
Par exemple:
mon_message= """Bonjour
Voici notre rapport du mois de MArs 2023.
Bonne réception.
Bob"""
Deuxième fonction:
def send_emails():
reciptients = ["emails@worldmerit.org", "email@qsimpact.org",
"email@gmail.com"]
daily_message ="""Hi,
Find the daily report attached.
Thanks"""
for recipient in reciptients:
sendemail(recipient,"Today Report", daily_message)
Dans cette fonction, nous avons recipients qui contient, la liste des
destinataires, notre message contenu dans la variable daily_message.
Ensuite nous envoyons les mails en parcourant la liste des destinataires grâce à la
boulce for en appelant chaque le fonction sendmail(arg1, arg2, arg3).
Puisque le rapport doit être joint au mail, nous devons ajouter une pièce jointe.
Nous allons alors modifier notre fonction d'envoie d'email pour qu'elle soit en
mesure de joindre un fichier. Nous lui ajoutons donc un paramètre. Ensuite nous
importons os pour chercher le fichier sur notre post de travail et l'envoyer.
A partir de maintenant, pour envoyer le mail, vous devez désormais précisez le nom
du fichier à joindre au mail parmi les arguments. Selon ce script, votre fichier
doit se retrouver dans le repertoire courant. Sinon vous pouvez modifier et le
placer n'importe où sur votre ordinateur.
Nous allons automatiser l'envoie des messages de tel sorte que chaque jour, à une
certaine heure de la journée, notre script envoie automaquement les emails à sa
liste des destinataires.