I keep on getting the error "TypeError: must be str, not bytes"

I keep on getting the error "TypeError: must be str, not bytes"

我不是 python 的新手,但我是 Tkinter 和 smtplib 模块的新手。我正在尝试设置自己的电子邮件界面,使用 tkinter 作为 GUI,并使用 smtplib 发送电子邮件。该程序从输入框中获取输入,然后使用它们发送电子邮件,但它一直抛出此错误,我不知道如何解决...

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

我做了一些研究;许多人有同样的问题,但情况完全不同(需要不同的解决方法)。所以这是我的代码。

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()

快速浏览后,我看到这一行 -> user_Password = Two.get 末尾缺少括号。结果,可能没有提供密码,而是一个无论如何都不是密码的字节对象。 将行更改为 user_Password = Two.get() 似乎在我的测试中对我有用

这应该可以解决问题所问的问题,尽管您最终可能会遇到一个超出此问题范围的新问题 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')