Python 3.x Tkinter smtplib错误未定义

Python 3.x Tkinter smtplib错误未定义,python-3.x,tkinter,runtime-error,smtplib,Python 3.x,Tkinter,Runtime Error,Smtplib,我正在尝试制作一个发送电子邮件的程序。但如果我试一下,我就会出错 Exception in Tkinter callback Traceback (most recent call last): File "C:\Users\Pivo\AppData\Local\Programs\Python\Python35-32\lib\tkinter\__init__.py", line 1550, in __call__ return self.func(*args) File "C:\

我正在尝试制作一个发送电子邮件的程序。但如果我试一下,我就会出错

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\Pivo\AppData\Local\Programs\Python\Python35-32\lib\tkinter\__init__.py", line 1550, in __call__
    return self.func(*args)
  File "C:\Users\Pivo\Desktop\emailtkinter.py", line 24, in th
    server.sendmail(vari2.get(), toaddrs12, message)
NameError: name 'server' is not defined
完整代码:

import smtplib
from tkinter import *
root = Tk()
class FullScreenApp(object):
    def __init__(self, master, **kwargs):
        self.master=master
        pad=3
        self._geom='200x200+0+0'
        master.geometry("{0}x{1}+0+0".format(
            master.winfo_screenwidth()-pad, master.winfo_screenheight()-pad))
        master.bind('<Escape>',self.toggle_geom)            
    def toggle_geom(self,event):
        geom=self.master.winfo_geometry()
        print(geom,self._geom)
        self.master.geometry(self._geom)
        self._geom=geom

app=FullScreenApp(root)
def fn():
    def th():
        a = text.get("1.0", END)
        dgc = assa.get()
        message = dgc, a
        server.sendmail(vari2.get(), toaddrs12, message)
        server.quit
    Label(root, text='To').pack()
    toaddrs12 = StringVar()
    toaddrs1 = Entry(root, textvariable=toaddrs12).pack()
    Label(root, text='Subject').pack()
    assa = StringVar()
    ass = Entry(root, textvariable=assa).pack()
    Label(root, text='Body').pack()
    text = Text(root)
    text.pack()
    btn = Button(root, text='Send', command=th)
    btn.pack()

b = Label(root, text='SMTP Server')
vari1 = StringVar()
ab = Entry(root, textvariable=vari1)
b.pack()
ab.pack()
ba = Label(root, text = 'Email')
ba.pack()
vari2 = StringVar()
c = Entry(root, textvariable=vari2)
c.pack()
ca = Label(root, text = 'Password')
ca.pack()
vari3 = StringVar()
widget = Entry(root, show="*", textvariable=vari3)
widget.pack()

def connect():
    print(vari1.get())
    print(vari2.get())
    print(vari3.get())
    server = smtplib.SMTP(vari1.get(), 587)
    server.ehlo()
    server.starttls()
    server.ehlo()
    server.login(vari2.get(), vari3.get())
    b.pack_forget()
    ab.pack_forget()
    ba.pack_forget()
    c.pack_forget()
    ca.pack_forget()
    widget.pack_forget()
    btn1.pack_forget()
    fn()
btn1 = Button(root, command = connect, text = 'Connect')
btn1.pack()
root.mainloop()
import smtplib
from tkinter import *

root = Tk()


class FullScreenApp(object):
    def __init__(self, master, **kwargs):
        self.master = master
        pad = 3
        self._geom = '200x200+0+0'
        master.geometry("{0}x{1}+0+0".format(
            master.winfo_screenwidth() - pad, master.winfo_screenheight() - pad))
        master.bind('<Escape>', self.toggle_geom)

    def toggle_geom(self, event):
        geom = self.master.winfo_geometry()
        print(geom, self._geom)
        self.master.geometry(self._geom)
        self._geom = geom


app = FullScreenApp(root)


def fn():
    def th():
        contents = text.get("1.0", END)
        subject = assa.get()
        message = "Subject: {}\n\n{}".format(subject, contents)
        server.sendmail(vari2.get(), toaddrs12.get(), message)
        server.quit()

    Label(root, text='To').pack()
    toaddrs12 = StringVar()
    toaddrs1 = Entry(root, textvariable=toaddrs12).pack()
    Label(root, text='Subject').pack()
    assa = StringVar()
    ass = Entry(root, textvariable=assa).pack()
    Label(root, text='Body').pack()
    text = Text(root)
    text.pack()
    btn = Button(root, text='Send', command=th)
    btn.pack()


b = Label(root, text='SMTP Server')
vari1 = StringVar()
ab = Entry(root, textvariable=vari1)
b.pack()
ab.pack()
ba = Label(root, text='Email')
ba.pack()
vari2 = StringVar()
c = Entry(root, textvariable=vari2)
c.pack()
ca = Label(root, text='Password')
ca.pack()
vari3 = StringVar()
widget = Entry(root, show="*", textvariable=vari3)
widget.pack()


def connect():
    print(vari1.get())
    print(vari2.get())
    print(vari3.get())
    global server
    server = smtplib.SMTP(vari1.get(), 587)
    server.ehlo()
    server.starttls()
    server.ehlo()
    server.login(vari2.get(), vari3.get())
    b.pack_forget()
    ab.pack_forget()
    ba.pack_forget()
    c.pack_forget()
    ca.pack_forget()
    widget.pack_forget()
    btn1.pack_forget()
    fn()


btn1 = Button(root, command=connect, text='Connect')
btn1.pack()
root.mainloop()
导入smtplib
从tkinter进口*
root=Tk()
类FullScreenApp(对象):
定义初始(自我、主控、**kwargs):
self.master=master
pad=3
自我评价_geom='200x200+0+0'
几何体(“{0}x{1}+0+0”。格式(
master.winfo_屏幕宽度()-pad,master.winfo_屏幕高度()-pad))
主绑定(“”,自切换)
def切换_geom(自身、事件):
geom=self.master.winfo_geometry()
打印(几何图形、自/几何图形)
自学几何(自学几何)
自。_geom=geom
app=FullScreenApp(根目录)
def fn():
def th():
a=text.get(“1.0”,结束)
dgc=assa.get()
消息=dgc,a
sendmail(vari2.get(),toaddrs12,message)
server.quit
标签(根,text='To').pack()
toaddrs12=StringVar()
toaddrs1=条目(根,textvariable=toaddrs12).pack()
标签(root,text='Subject').pack()
assa=StringVar()
ass=条目(根,textvariable=assa).pack()
标签(根,text='Body').pack()
text=文本(根)
text.pack()
btn=按钮(根,text='Send',command=th)
btn.pack()
b=标签(根,text='SMTP服务器')
vari1=StringVar()
ab=条目(根,textvariable=vari1)
b、 包()
ab.pack()
ba=标签(根,文本='Email')
文学士
vari2=StringVar()
c=条目(根,textvariable=vari2)
c、 包()
ca=标签(根,文本='密码')
ca.pack()
vari3=StringVar()
小部件=条目(根,show=“*”,textvariable=vari3)
widget.pack()
def connect():
打印(vari1.get())
打印(vari2.get())
打印(vari3.get())
server=smtplib.SMTP(vari1.get(),587)
server.ehlo()
server.starttls()
server.ehlo()
server.login(vari2.get(),vari3.get())
b、 打包
ab.打包忘记()
ba.pack_忘记()
c、 打包
ca.打包忘记()
widget.pack_忘记()
btn1.打包忘记()
fn()
btn1=按钮(根,命令=连接,文本=连接)
btn1.pack()
root.mainloop()

必须将变量服务器声明为全局变量

global server
server = smtplib.SMTP(vari1.get(), 587)
此外,必须更正函数,必须连接数据。 如果执行
a,b
操作,则创建的是元组:
(a,b)
,而不是所需的字符串

def th():
    contents = text.get("1.0", END)
    subject = assa.get()
    message = "Subject: {}\n\n{}".format(subject, contents)
    server.sendmail(vari2.get(), toaddrs12.get(), message)
    server.quit()
完整代码:

import smtplib
from tkinter import *
root = Tk()
class FullScreenApp(object):
    def __init__(self, master, **kwargs):
        self.master=master
        pad=3
        self._geom='200x200+0+0'
        master.geometry("{0}x{1}+0+0".format(
            master.winfo_screenwidth()-pad, master.winfo_screenheight()-pad))
        master.bind('<Escape>',self.toggle_geom)            
    def toggle_geom(self,event):
        geom=self.master.winfo_geometry()
        print(geom,self._geom)
        self.master.geometry(self._geom)
        self._geom=geom

app=FullScreenApp(root)
def fn():
    def th():
        a = text.get("1.0", END)
        dgc = assa.get()
        message = dgc, a
        server.sendmail(vari2.get(), toaddrs12, message)
        server.quit
    Label(root, text='To').pack()
    toaddrs12 = StringVar()
    toaddrs1 = Entry(root, textvariable=toaddrs12).pack()
    Label(root, text='Subject').pack()
    assa = StringVar()
    ass = Entry(root, textvariable=assa).pack()
    Label(root, text='Body').pack()
    text = Text(root)
    text.pack()
    btn = Button(root, text='Send', command=th)
    btn.pack()

b = Label(root, text='SMTP Server')
vari1 = StringVar()
ab = Entry(root, textvariable=vari1)
b.pack()
ab.pack()
ba = Label(root, text = 'Email')
ba.pack()
vari2 = StringVar()
c = Entry(root, textvariable=vari2)
c.pack()
ca = Label(root, text = 'Password')
ca.pack()
vari3 = StringVar()
widget = Entry(root, show="*", textvariable=vari3)
widget.pack()

def connect():
    print(vari1.get())
    print(vari2.get())
    print(vari3.get())
    server = smtplib.SMTP(vari1.get(), 587)
    server.ehlo()
    server.starttls()
    server.ehlo()
    server.login(vari2.get(), vari3.get())
    b.pack_forget()
    ab.pack_forget()
    ba.pack_forget()
    c.pack_forget()
    ca.pack_forget()
    widget.pack_forget()
    btn1.pack_forget()
    fn()
btn1 = Button(root, command = connect, text = 'Connect')
btn1.pack()
root.mainloop()
import smtplib
from tkinter import *

root = Tk()


class FullScreenApp(object):
    def __init__(self, master, **kwargs):
        self.master = master
        pad = 3
        self._geom = '200x200+0+0'
        master.geometry("{0}x{1}+0+0".format(
            master.winfo_screenwidth() - pad, master.winfo_screenheight() - pad))
        master.bind('<Escape>', self.toggle_geom)

    def toggle_geom(self, event):
        geom = self.master.winfo_geometry()
        print(geom, self._geom)
        self.master.geometry(self._geom)
        self._geom = geom


app = FullScreenApp(root)


def fn():
    def th():
        contents = text.get("1.0", END)
        subject = assa.get()
        message = "Subject: {}\n\n{}".format(subject, contents)
        server.sendmail(vari2.get(), toaddrs12.get(), message)
        server.quit()

    Label(root, text='To').pack()
    toaddrs12 = StringVar()
    toaddrs1 = Entry(root, textvariable=toaddrs12).pack()
    Label(root, text='Subject').pack()
    assa = StringVar()
    ass = Entry(root, textvariable=assa).pack()
    Label(root, text='Body').pack()
    text = Text(root)
    text.pack()
    btn = Button(root, text='Send', command=th)
    btn.pack()


b = Label(root, text='SMTP Server')
vari1 = StringVar()
ab = Entry(root, textvariable=vari1)
b.pack()
ab.pack()
ba = Label(root, text='Email')
ba.pack()
vari2 = StringVar()
c = Entry(root, textvariable=vari2)
c.pack()
ca = Label(root, text='Password')
ca.pack()
vari3 = StringVar()
widget = Entry(root, show="*", textvariable=vari3)
widget.pack()


def connect():
    print(vari1.get())
    print(vari2.get())
    print(vari3.get())
    global server
    server = smtplib.SMTP(vari1.get(), 587)
    server.ehlo()
    server.starttls()
    server.ehlo()
    server.login(vari2.get(), vari3.get())
    b.pack_forget()
    ab.pack_forget()
    ba.pack_forget()
    c.pack_forget()
    ca.pack_forget()
    widget.pack_forget()
    btn1.pack_forget()
    fn()


btn1 = Button(root, command=connect, text='Connect')
btn1.pack()
root.mainloop()
导入smtplib
从tkinter进口*
root=Tk()
类FullScreenApp(对象):
定义初始(自我、主控、**kwargs):
self.master=master
pad=3
自洽性_geom='200x200+0+0'
几何体(“{0}x{1}+0+0”。格式(
master.winfo_屏幕宽度()-pad,master.winfo_屏幕高度()-pad))
主绑定(“”,自切换)
def切换_geom(自身、事件):
geom=self.master.winfo_geometry()
打印(几何图形、自/几何图形)
自学几何(自学几何)
自。_geom=geom
app=FullScreenApp(根目录)
def fn():
def th():
contents=text.get(“1.0”,结束)
subject=assa.get()
message=“Subject:{}\n\n{}”。格式(Subject,contents)
sendmail(vari2.get(),toaddrs12.get(),message)
server.quit()
标签(根,text='To').pack()
toaddrs12=StringVar()
toaddrs1=条目(根,textvariable=toaddrs12).pack()
标签(root,text='Subject').pack()
assa=StringVar()
ass=条目(根,textvariable=assa).pack()
标签(根,text='Body').pack()
text=文本(根)
text.pack()
btn=按钮(根,text='Send',command=th)
btn.pack()
b=标签(根,text='SMTP服务器')
vari1=StringVar()
ab=条目(根,textvariable=vari1)
b、 包()
ab.pack()
ba=标签(根,text='Email')
文学士
vari2=StringVar()
c=条目(根,textvariable=vari2)
c、 包()
ca=标签(根,text='Password')
ca.pack()
vari3=StringVar()
小部件=条目(根,show=“*”,textvariable=vari3)
widget.pack()
def connect():
打印(vari1.get())
打印(vari2.get())
打印(vari3.get())
全局服务器
server=smtplib.SMTP(vari1.get(),587)
server.ehlo()
server.starttls()
server.ehlo()
server.login(vari2.get(),vari3.get())
b、 打包
ab.打包忘记()
ba.pack_忘记()
c、 打包
ca.打包忘记()
widget.pack_忘记()
btn1.打包忘记()
fn()
btn1=按钮(根,命令=连接,文本=连接)
btn1.pack()
root.mainloop()

感谢您今天第二次光临!