Skip to content

Instantly share code, notes, and snippets.

@ProfAvery
Created September 24, 2018 04:00
Show Gist options
  • Save ProfAvery/d729acde5e6534e4461dc2677549f9db to your computer and use it in GitHub Desktop.
Save ProfAvery/d729acde5e6534e4461dc2677549f9db to your computer and use it in GitHub Desktop.
Simple SMTP client for CPSC 471 demo
# Simple Email client
#
# Hacked-up version of https://github.com/arka-nitd/send-email-gui.git
#
# To run a debugging SMTP server:
#
# $ python3 -m smtpd -n -d -c DebuggingServer
#
from tkinter import *
from tkinter import ttk
import smtplib
def sendemail():
try:
sender = account.get()
recepient = [receiver.get()]
sub = subject.get()
pswrd = password.get()
msg = msgbody.get('1.0','end')
msgtosend = """\
From: %s
To: %s
Subject: %s
%s
""" % (sender, recepient, sub, msg)
mail = smtplib.SMTP('localhost',8025)
mail.sendmail(sender, recepient, msgtosend)
mail.close()
ttk.Label(mainframe, text="Email sent successfully").grid(column=4,row=9,sticky=W)
except Exception as e:
ttk.Label(mainframe, text=str(e)).grid(column=4,row=9,sticky=W)
root = Tk()
root.title("Send an Email")
mainframe = ttk.Frame(root, padding="3 3 12 12")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)
account = StringVar()
password = StringVar()
receiver = StringVar()
subject = StringVar()
msgbody = StringVar()
ttk.Label(mainframe, text="From: ").grid(column=0, row=1, sticky=W)
account_entry = ttk.Entry(mainframe, width=30, textvariable=account)
account_entry.grid(column=4, row=1, sticky=(W, E))
ttk.Label(mainframe, text="To: ").grid(column=0, row=3, sticky=W)
receiver_entry = ttk.Entry(mainframe, width=30, textvariable=receiver)
receiver_entry.grid(column=4, row=3, sticky=(W, E))
ttk.Label(mainframe, text="Subject: ").grid(column=0, row=6, sticky=W)
subject_entry = ttk.Entry(mainframe, width=30, textvariable=subject)
subject_entry.grid(column=4, row=6, sticky=(W, E))
ttk.Label(mainframe, text="Message Body: ").grid(column=0, row=7, sticky=W)
msgbody = Text(mainframe, width=30, height=10)
msgbody.grid(column=4, row=7, sticky=(W, E))
ttk.Button(mainframe, text="Send Email", command=sendemail).grid(column=4,row=8,sticky=E)
for child in mainframe.winfo_children(): child.grid_configure(padx=5, pady=5)
account_entry.focus()
root.mainloop()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment