类型错误:get()缺少一个必需的位置参数:'index1'

4

我正在尝试制作一个非常简单的电子邮件客户端。这将使我能够从学校向家里电脑发送电子邮件,因为学校已经阻止了outlook和gmail。当我尝试运行它时,它会显示:TypeError:get()缺少1个必需的位置参数:“index1” 我已经用星号替换了我的电子邮件和密码,以确保安全性。提前感谢:)

这是我的代码:

from tkinter import *
import tkinter as tk
from email.message import EmailMessage
import smtplib

window=Tk()
window.title('Email Client')
window.geometry('200x275')

textbox2=Text(window,width=20,height=10,bg='light grey')
label2=Label(window,text='Message')
textbox1=Text(window,width=20,height=1,bg='light grey')
label1=Label(window,text='Subject')

def email_alert(subject, body, to):
    msg = EmailMessage()
    msg.set_content(body)
    msg['subject'] = subject
    msg['to'] = to

    user = "*******************"
    msg['from'] = user
    password = "*************"

    server = smtplib.SMTP("smtp.gmail.com", 587)
    server.starttls()
    server.login(user, password)
    server.send_message(msg)

    server.quit()

if __name__ == '__main__':
    def Send():
        dialog = textbox1.get()
        subject = textbox2.get()
        email_alert(subject, dialog, "******************")

label1.pack()
textbox1.pack()
label2.pack()
textbox2.pack()

button1=Button(window,text='Send Email',width=10,height=1, command=Send)
button1.pack()

window.mainloop()
3个回答

11
在你的send()函数中,需要添加get()参数。
dialog = textbox1.get("1.0",'end-1c')
subject = textbox2.get("1.0",'end-1c')

第一部分的"1.0"表示输入应从第一行第零个字符开始读取。

end-1c可以分为两部分:

  1. end:读取到文本末尾。
  2. 1c:从末尾开始删除一个字符。

这将删除最后一个字符,以便删除最后的\n,使您的电子邮件不会以额外的行结束。


2

0

错误发生的原因是 .get 方法至少需要一个参数。要获取内容,您必须使用 .get("1.0", END)

尝试一下

from tkinter import *
import tkinter as tk
from email.message import EmailMessage
import smtplib

window=Tk()
window.title('Email Client')
window.geometry('200x275')

textbox2=Text(window,width=20,height=10,bg='light grey')
label2=Label(window,text='Message')
textbox1=Text(window,width=20,height=1,bg='light grey')
label1=Label(window,text='Subject')

def email_alert(subject, body, to):
    msg = EmailMessage()
    msg.set_content(body)
    msg['subject'] = subject
    msg['to'] = to

    user = "*******************"
    msg['from'] = user
    password = "*************"

    server = smtplib.SMTP("smtp.gmail.com", 587)
    server.starttls()
    server.login(user, password)
    server.send_message(msg)

    server.quit()

if __name__ == '__main__':
    def Send():
        dialog = textbox1.get("1.0",END)
        subject = textbox2.get("1.0",END)
        email_alert(subject, dialog, "******************")

label1.pack()
textbox1.pack()
label2.pack()
textbox2.pack()

button1=Button(window,text='Send Email',width=10,height=1, command=Send)
button1.pack()

window.mainloop()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接