entry.怎么变成str

thinker做出的页面输入属性后,在代码中使用报错
报错内容:'entry' object has no attribute 'encode'

window = tkk.Tk()
 
# 第2步,给窗口的可视化起名字
window.title('。')
 
# 第3步,设定窗口的大小(长 * 宽)
window.geometry('500x300')  # 这里的乘是小x
 
# 第4步,在图形界面上设定输入框控件entry并放置控件
e1 = tkk.Entry(window, show=None, font=('Arial', 14))
e2 = tkk.Entry(window, show=None, font=('Arial', 14))
e3 = tkk.Entry(window, show=None, font=('Arial', 14))
e1.pack()
e2.pack()
e3.pack()
 
# 第5步,主窗口循环显示
window.mainloop()

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage

#设置登录及服务器信息
mail_host = 'smtp.163.com'
mail_user = e3
mail_pass = e2
sender = e1
receivers = ['']

#设置eamil信息
#添加一个MIMEmultipart类,处理正文及附件
message = MIMEMultipart()
message['From'] = sender
message['To'] = receivers[0]
message['Subject'] = e1,e2,e3

参考GPT和自己的思路,错误信息 'entry' object has no attribute 'encode' 表示你正在尝试对一个类型为 "entry" 的对象进行编码,这是不可能的,因为 "entry" 对象没有 "encode" 属性或方法。

这个错误的原因似乎是你直接将 "e1"、"e2" 和 "e3" 对象传递到电子邮件消息头(即 "From"、"To" 和 "Subject" 字段)中,而不是将它们的值作为字符串传递。在使用这些值之前,你应该使用 get() 方法将输入框的值作为字符串提取出来,然后再将其用于电子邮件消息中:

mail_user = e2.get()
mail_pass = e3.get()
sender = e1.get()
message['From'] = sender.get()
message['To'] = receivers[0]
message['Subject'] = e1.get() + ', ' + e2.get() + ', ' + e3.get()

另外,在发送电子邮件之前,请确保将空的 receivers 列表替换为收件人的电子邮件地址:

receivers = ['recipient@example.com']

最后,你需要创建一个 SMTP 对象,并使用它的 sendmail() 方法发送消息数据。

# 创建SMTP对象
smtpObj = smtplib.SMTP()
# 连接到服务器
smtpObj.connect(mail_host, 25)
# 登录到服务器
smtpObj.login(mail_user, mail_pass)
# 发送邮件
smtpObj.sendmail(sender, receivers, message.as_string())
# 退出
smtpObj.quit()

请注意,你可能需要根据使用的电子邮件服务器设置正确的端口号和加密方法(例如 smtpObj.starttls())。

直接用你的str去构造对象就可以了啊