I am not new to python, but I am new to the Tkinter, and smtplib modules. I'm trying to set up my own email interface, using tkinter as the GUI, and smtplib to send the emails. The program takes the input from the entry boxes, then uses them to send the emails, but it keeps throwing this error and I don't know how to fix it...
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/tkinter/__init__.py", line 1699, in __call__
return self.func(*args)
File "/Users/jonbrain/PycharmProjects/GUI for Email/venv/The
Propper GuI.py", line 39, in send_it
server.login(emailUser, user_Password)
`File"/Library/Frameworks/Python.framework/Versions/3.6/lib/
python3. 6/smtplib.py",
line 721, in login
initial_response_ok=initial_response_ok)
File"/Library/Frameworks/Python.framework/Versions/3.6/lib/
python3.6/smtplib.py", line 631, in auth
(code, resp) = self.docmd("AUTH", mechanism + " " + response)
TypeError: must be str, not bytes
I have done a bit of research; many people have the same question, but in an entirely different situation (which calls for a different fix). So here is my code.
from tkinter import *
import smtplib
root = Tk()
root.title("Jon's Email Service")
root.geometry("800x400+0+0")
Label(root, text="Jon's Email Service", font=("arial",
60,"bold"), fg="blue").pack()
Label(root, text="User's Email address {Has to be gmail} ",font=
("arial", 20,), fg="black").pack()
One = Entry(root,width=40, bg="white")
One.pack()
Label(root, text="User's Gmail Password", font=("arial",
20,),fg="black").pack()
Two = Entry(root, width=40, bg="white")
Two.pack()
Label(root, text="Email Recipient", font=("arial",
20,),fg="black").pack()
Three = Entry(root,width=40, bg="white")
Three.pack()
Label(root, text="The Message", font=("arial",
20,),fg="black").pack()
Four = Entry(root, width=60, bg="white")
Four.pack()
def send_it():
email_resipient = Three.get()
Label(root, text="Email Is Sent!", font=("arial", 20,),
fg="Red").pack()
emailUser = One.get()
user_Password = Two.get
msg = Four.get()
print(emailUser)
server = smtplib.SMTP("smtp.gmail.com", 587)
server.starttls()
server.login(emailUser, user_Password)
server.sendmail(emailUser, email_resipient, msg)
server.quit()
send = Button(root, text="Send", default='active', width = 40,
bg = "lightblue",command = send_it).pack()
root.mainloop()
After a quick look, I see this line -> user_Password = Two.get
missing the brackets on the end of it. As a result, the password is probably not being supplied, rather a bytes object which is not the password anyhow.
changing the line to user_Password = Two.get()
seems to work for me in my testing
That should resolve the issue the question asks about although you may possibly end up with a new issue smtplib.SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8 https://support.google.com/mail/?p=BadCredentials 196sm197509481pfc.77 - gsmtp')
which is beyond the scope of this question.