Dans cet article, nous développerons une application utilisant Python. La bibliothèque standard tkinter est utilisée comme bibliothèque GUI. La bibliothèque standard smtplib est utilisée pour l'envoi de courrier. Si vous comprenez dans une certaine mesure python en lisant cet article, vous pourrez apprendre à utiliser tkinter et smtplib dans une certaine mesure.
C'est l'une des bibliothèques Python standard. Une bibliothèque pour créer des applications GUI. Une bibliothèque GUI avec une grammaire simple et un démarrage rapide.
Commençons par créer une fenêtre qui devient.
import tkinter as tk
if __name__ == "__main__":
root = tk.Tk()
root.mainloop()
Nous allons créer une classe qui hérite de la classe Frame afin d'écrire avec l'orientation objet à l'esprit. Créez les éléments nécessaires (widgets) dans create_widgets (), organisez-les et créez l'écran.
import tkinter as tk
class Application(tk.Frame):
def __init__(self, master):
super().__init__(master)
self.pack()
#Définir la taille et le titre de l'écran
master.geometry("300x200")
master.title("Application d'envoi de courrier simple")
self.create_widgets()
#Méthode pour générer un widget
def create_widgets(self):
self.label = tk.Label(self,text="Application d'envoi de courrier simple")
self.label.grid(row=0, column=0, columnspan=3)
self.to_label = tk.Label(self, text="destination:")
self.to_entry = tk.Entry(self, width=20)
self.to_label.grid(row=1, column=0)
self.to_entry.grid(row=1, column=1, columnspan=2)
self.subject_label = tk.Label(self, text="matière:")
self.subject_entry = tk.Entry(self, width=20)
self.subject_label.grid(row=2, column=0)
self.subject_entry.grid(row=2, column=1, columnspan=2)
self.body_label = tk.Label(self, text="Texte:")
self.body_text = tk.Entry(self, width=20)
self.body_label.grid(row=3, column=0)
self.body_text.grid(row=3, column=1, columnspan=2)
self.button = tk.Button(self, text="Envoyer")
self.button.grid(row=4, column=2, sticky=tk.E, pady=10)
if __name__ == "__main__":
root = tk.Tk()
Application(master=root)
root.mainloop()
Définissez le traitement des événements pour le bouton d'envoi. Le traitement des événements est le traitement (méthode) qui est appelé lorsque le bouton est enfoncé. Définissez le traitement des événements à l'aide d'une expression lambda dans la commande d'argument lorsque le bouton est généré. Définissez le processus pour envoyer la valeur d'entrée à la sortie standard (console) pour le moment.
#Méthode pour générer un widget
def create_widgets(self):
#~ Omis ~
self.button = tk.Button(self, text="Envoyer", command=lambda:self.click_event())
self.button.grid(row=4, column=2, sticky=tk.E, pady=10)
def click_event(self):
to = self.to_entry.get()
subject = self.subject_entry.get()
body = self.body_text.get()
print(f"destination:{to}")
print(f"matière:{subject}")
print(f"Texte:{body}")
destination:[email protected]
matière:À propos de la réunion de l'autre jour
Texte:Merci pour la rencontre de l'autre jour.
Un peu de préparation est nécessaire avant de créer le processus d'envoi de courrier. Cette fois, je vais le créer en supposant qu'il sera envoyé depuis le compte Gmail. Tout d'abord, si vous n'avez pas de compte Gmail, veuillez en créer un à partir du lien ci-dessous. Si vous en avez déjà un, nous vous recommandons d'obtenir un sous-compte pour le développement. (Comme vous pouvez le voir ci-dessous, vous devez réduire un peu les paramètres de sécurité de votre compte.) https://accounts.google.com/SignUp
Si vous avez déjà un compte ou si vous avez fini d'en créer un nouveau, vous devrez apporter quelques modifications aux paramètres de votre compte pour envoyer des e-mails à partir de programmes Python. Suivez les étapes ci-dessous pour afficher «Écran de configuration du compte».
Sélectionnez ensuite Sécurité dans le menu de gauche.
Faites défiler l'écran jusqu'en bas et réglez «Accès aux applications non sécurisées» sur «Activé».
Vous êtes maintenant prêt à vous connecter à Gmail depuis votre programme Python et à envoyer votre e-mail.
Je ferai partie du traitement de la transmission du courrier. Tout d'abord, importez la bibliothèque requise pour l'envoi de courrier.
from smtplib import SMTP
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
Ensuite, nous allons créer une méthode d'envoi de courrier. La partie qui change dynamiquement chaque fois que vous envoyez un e-mail est reçue en tant qu'argument de méthode. Les valeurs qui ne changent pas à chaque fois qu'un e-mail est envoyé sont définies comme des constantes dans la méthode. L'ID et le PASS seront l'adresse e-mail et le mot de passe Gmail de l'expéditeur. Veuillez régler cela en fonction de votre propre environnement.
#Processus d'envoi d'e-mails
def send_mail(self, to, subject, body):
#Définir les informations nécessaires à la transmission avec une constante
ID = "mail_address"
PASS = "password"
HOST = "smtp.gmail.com"
PORT = 587
#Définir le corps de l'e-mail
msg = MIMEMultipart()
msg.attach(MIMEText(body, "html"))
#Définir le sujet, l'adresse source, l'adresse de destination
msg["Subject"] = subject
msg["From"] = ID
msg["To"] = to
#Connectez-vous au serveur SMTP et démarrez la communication TLS
server=SMTP(HOST, PORT)
server.starttls()
server.login(ID, PASS) #Processus d'authentification de connexion
server.send_message(msg) #Processus d'envoi d'e-mails
server.quit() #Fin de la communication TLS
Enfin, si vous modifiez la partie de traitement des événements pour appeler la méthode que vous avez créée précédemment, l'application d'envoi de courrier simple est terminée.
def click_event(self):
to = self.to_entry.get()
subject = self.subject_entry.get()
body = self.body_text.get()
# print(f"destination:{to}")
# print(f"matière:{subject}")
# print(f"Texte:{body}")
self.send_mail(to=to, subject=subject, body=body)
Le code source complété est le suivant.
import tkinter as tk
from smtplib import SMTP
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
class Application(tk.Frame):
def __init__(self, master):
super().__init__(master)
self.pack()
#Définir la taille et le titre de l'écran
master.geometry("300x200")
master.title("Application d'envoi de courrier simple")
self.create_widgets()
#Méthode pour générer un widget
def create_widgets(self):
self.label = tk.Label(self,text="Application d'envoi de courrier simple")
self.label.grid(row=0, column=0, columnspan=3)
self.to_label = tk.Label(self, text="destination:")
self.to_entry = tk.Entry(self, width=20)
self.to_label.grid(row=1, column=0)
self.to_entry.grid(row=1, column=1, columnspan=2)
self.subject_label = tk.Label(self, text="matière:")
self.subject_entry = tk.Entry(self, width=20)
self.subject_label.grid(row=2, column=0)
self.subject_entry.grid(row=2, column=1, columnspan=2)
self.body_label = tk.Label(self, text="Texte:")
self.body_text = tk.Entry(self, width=20)
self.body_label.grid(row=3, column=0)
self.body_text.grid(row=3, column=1, columnspan=2)
self.button = tk.Button(self, text="Envoyer", command=lambda:self.click_event())
self.button.grid(row=4, column=2, sticky=tk.E, pady=10)
def click_event(self):
to = self.to_entry.get()
subject = self.subject_entry.get()
body = self.body_text.get()
self.send_mail(to=to, subject=subject, body=body)
#Processus d'envoi d'e-mails
def send_mail(self, to, subject, body):
#Définir les informations nécessaires à la transmission avec une constante
ID = "mail_address"
PASS = "password"
HOST = "smtp.gmail.com"
PORT = 587
#Définir le corps de l'e-mail
msg = MIMEMultipart()
msg.attach(MIMEText(body, "html"))
#Définir le sujet, l'adresse source, l'adresse de destination
msg["Subject"] = subject
msg["From"] = ID
msg["To"] = to
#Connectez-vous au serveur SMTP et démarrez la communication TLS
server=SMTP(HOST, PORT)
server.starttls() #Communication TLS démarrée
server.login(ID, PASS) #Processus d'authentification de connexion
server.send_message(msg) #Processus d'envoi d'e-mails
server.quit() #Fin de la communication TLS
if __name__ == "__main__":
root = tk.Tk()
Application(master=root)
root.mainloop()
Si vous souhaitez créer une application d'envoi d'e-mails après avoir tout essayé, restaurons les paramètres de sécurité de votre compte Google.