In diesem Artikel werden wir eine Anwendung entwickeln, die Python verwendet. Die Standardbibliothek tkinter wird als GUI-Bibliothek verwendet. Die Standardbibliothek smtplib wird zum Senden von E-Mails verwendet. Wenn Sie Python bis zu einem gewissen Grad verstehen, indem Sie diesen Artikel lesen, können Sie lernen, wie Sie tkinter und smtplib bis zu einem gewissen Grad verwenden.
Es ist eine der Standard-Python-Bibliotheken. Eine Bibliothek zum Erstellen von GUI-Anwendungen. Eine GUI-Bibliothek mit einfacher Grammatik und schnellem Start.
Zuerst erstellen wir ein Fenster, das wird.
import tkinter as tk
if __name__ == "__main__":
root = tk.Tk()
root.mainloop()
Wir werden eine Klasse erstellen, die die Frame-Klasse erbt, um unter Berücksichtigung der Objektorientierung zu schreiben. Erstellen Sie die erforderlichen Teile (Widgets) in create_widgets (), ordnen Sie sie an und erstellen Sie den Bildschirm.
import tkinter as tk
class Application(tk.Frame):
def __init__(self, master):
super().__init__(master)
self.pack()
#Stellen Sie Bildschirmgröße und Titel ein
master.geometry("300x200")
master.title("Einfache Mail-Versand-App")
self.create_widgets()
#Methode zum Generieren eines Widgets
def create_widgets(self):
self.label = tk.Label(self,text="Einfache Mail-Versand-App")
self.label.grid(row=0, column=0, columnspan=3)
self.to_label = tk.Label(self, text="Ziel:")
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="Gegenstand:")
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="Text:")
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="Senden")
self.button.grid(row=4, column=2, sticky=tk.E, pady=10)
if __name__ == "__main__":
root = tk.Tk()
Application(master=root)
root.mainloop()
Legen Sie die Ereignisverarbeitung für die Schaltfläche "Senden" fest. Ereignisverarbeitung ist die Verarbeitung (Methode), die beim Drücken der Taste aufgerufen wird. Legen Sie die Ereignisverarbeitung mit einem Lambda-Ausdruck im Argumentbefehl fest, wenn die Schaltfläche generiert wird. Stellen Sie den Prozess so ein, dass der Eingabewert vorerst an die Standardausgabe (Konsole) ausgegeben wird.
#Methode zum Generieren eines Widgets
def create_widgets(self):
#~ Ausgelassen ~
self.button = tk.Button(self, text="Senden", 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"Ziel:{to}")
print(f"Gegenstand:{subject}")
print(f"Text:{body}")
Ziel:[email protected]
Gegenstand:Über das Treffen des anderen Tages
Text:Vielen Dank für das Treffen neulich.
Vor dem Erstellen des E-Mail-Sendevorgangs ist eine kleine Vorbereitung erforderlich. Dieses Mal werde ich es unter der Annahme erstellen, dass es vom Google Mail-Konto gesendet wird. Wenn Sie noch kein Google Mail-Konto haben, erstellen Sie zunächst eines über den unten stehenden Link. Wenn Sie bereits eines haben, empfehlen wir Ihnen, ein Unterkonto für die Entwicklung zu erstellen. (Wie Sie unten sehen können, müssen Sie die Sicherheitseinstellungen Ihres Kontos etwas verringern.) https://accounts.google.com/SignUp
Wenn Sie bereits ein Konto haben oder ein neues Konto erstellt haben, müssen Sie einige Änderungen an Ihren Kontoeinstellungen vornehmen, um E-Mails von Python-Programmen zu senden. Führen Sie die folgenden Schritte aus, um den Bildschirm "Kontoeinstellungen" anzuzeigen.
Wählen Sie dann im Menü links die Option Sicherheit.
Scrollen Sie zum unteren Bildschirmrand und schalten Sie "Zugriff auf unsichere Apps" auf "Ein".
Sie können sich jetzt von Ihrem Python-Programm aus bei Google Mail anmelden und Ihre E-Mail senden.
Ich werde den Teil der Postübertragungsverarbeitung machen. Importieren Sie zunächst die zum Senden von E-Mails erforderliche Bibliothek.
from smtplib import SMTP
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
Als Nächstes erstellen wir eine Methode zum Senden von E-Mails. Der Teil, der sich bei jedem Senden einer E-Mail dynamisch ändert, wird als Methodenargument empfangen. Werte, die sich nicht jedes Mal ändern, wenn eine E-Mail gesendet wird, werden in der Methode als Konstanten definiert. Die ID und der PASS sind die Google Mail-E-Mail-Adresse und das Kennwort des Absenders. Bitte stellen Sie dies entsprechend Ihrer eigenen Umgebung ein.
#E-Mail-Sendevorgang
def send_mail(self, to, subject, body):
#Definieren Sie die für die Übertragung erforderlichen Informationen mit einer Konstanten
ID = "mail_address"
PASS = "password"
HOST = "smtp.gmail.com"
PORT = 587
#E-Mail-Text festlegen
msg = MIMEMultipart()
msg.attach(MIMEText(body, "html"))
#Stellen Sie Betreff, Quelladresse und Zieladresse ein
msg["Subject"] = subject
msg["From"] = ID
msg["To"] = to
#Stellen Sie eine Verbindung zum SMTP-Server her und starten Sie die TLS-Kommunikation
server=SMTP(HOST, PORT)
server.starttls()
server.login(ID, PASS) #Anmeldeauthentifizierungsprozess
server.send_message(msg) #E-Mail-Sendevorgang
server.quit() #TLS-Kommunikationsende
Wenn Sie den Ereignisverarbeitungsteil so ändern, dass die zuvor erstellte Methode aufgerufen wird, ist die einfache E-Mail-Sendeanwendung abgeschlossen.
def click_event(self):
to = self.to_entry.get()
subject = self.subject_entry.get()
body = self.body_text.get()
# print(f"Ziel:{to}")
# print(f"Gegenstand:{subject}")
# print(f"Text:{body}")
self.send_mail(to=to, subject=subject, body=body)
Der vollständige Quellcode lautet wie folgt.
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()
#Stellen Sie Bildschirmgröße und Titel ein
master.geometry("300x200")
master.title("Einfache Mail-Versand-App")
self.create_widgets()
#Methode zum Generieren eines Widgets
def create_widgets(self):
self.label = tk.Label(self,text="Einfache Mail-Versand-App")
self.label.grid(row=0, column=0, columnspan=3)
self.to_label = tk.Label(self, text="Ziel:")
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="Gegenstand:")
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="Text:")
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="Senden", 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)
#E-Mail-Sendevorgang
def send_mail(self, to, subject, body):
#Definieren Sie die für die Übertragung erforderlichen Informationen mit einer Konstanten
ID = "mail_address"
PASS = "password"
HOST = "smtp.gmail.com"
PORT = 587
#E-Mail-Text festlegen
msg = MIMEMultipart()
msg.attach(MIMEText(body, "html"))
#Stellen Sie Betreff, Quelladresse und Zieladresse ein
msg["Subject"] = subject
msg["From"] = ID
msg["To"] = to
#Stellen Sie eine Verbindung zum SMTP-Server her und starten Sie die TLS-Kommunikation
server=SMTP(HOST, PORT)
server.starttls() #Die TLS-Kommunikation wurde gestartet
server.login(ID, PASS) #Anmeldeauthentifizierungsprozess
server.send_message(msg) #E-Mail-Sendevorgang
server.quit() #TLS-Kommunikationsende
if __name__ == "__main__":
root = tk.Tk()
Application(master=root)
root.mainloop()
Wenn Sie nach dem Ausprobieren eine E-Mail-Sende-App erstellen möchten, stellen Sie die Sicherheitseinstellungen Ihres Google-Kontos wieder her.