python邮件SMTP的GUI编程

写的是python中smtp的gui编程,用的163邮箱给qq邮箱发送邮件做测试,如果你发现你的发送失败,试着用以下方法解决:
1.网页登陆你的邮箱,设置中查看smtp是否开启,比如163邮箱的smtp是否开启
2.你输入的密码是不是163设置的远程客户端的授权密码,请用远程登录密码登陆测试
希望以上2点能帮助你测试成功·
效果图:
这是我的执行界面

#*-* coding:utf-8 *-*
import Tkinter as tk
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import smtplib



root = tk.Tk()
root.geometry('500x400')
root.title('SMTP发送')

#输入发送者邮箱
fram = tk.Frame(root)
frameL = tk.Frame(fram)
tk.Label(frameL,text='请输入你的邮箱',).pack()
frameL.pack(side = 'left')

frameR = tk.Frame(fram)
sender = tk.StringVar()
msgsend = tk.Entry(frameR,textvariable = sender,).pack()
sender.set('example@163.com')
frameR.pack(side = 'right')
fram.pack()


#输入邮箱密码
fram = tk.Frame(root)
frameL = tk.Frame(fram)
tk.Label(frameL,text='请输入邮箱密码',).pack()
frameL.pack(side = 'left')

frameR = tk.Frame(fram)
passwo = tk.StringVar()
msgpass = tk.Entry(frameR,textvariable = passwo,).pack()
passwo.set('******')
frameR.pack(side = 'right')
fram.pack()


#输入接收者者邮箱
fram = tk.Frame(root)
frameL = tk.Frame(fram)
tk.Label(frameL,text='请输入对方的邮箱',).pack(side = 'left')
frameL.pack(side = 'left')

frameR = tk.Frame(fram)
receive = tk.StringVar()
msgreveive = tk.Entry(frameR,textvariable = receive,).pack()
receive.set('example@qq.com')
frameR.pack(side = 'left')
fram.pack()


#输入邮件内容
tk.Label(root,text='请输入邮件内容',).pack(side = 'left')
msgrecv = tk.Text(root)
msgrecv.pack()


#格式化数据
def _format_addr(s):
    name, addr = parseaddr(s)
    return formataddr(( \
        Header(name, 'utf-8').encode(), \
        addr.encode('utf-8') if isinstance(addr, unicode) else addr))


def sendEmail():
    #取出发送者邮箱,登录密码,接收者邮箱
    global sender
    send = sender.get()
    global passwo
    passwd = passwo.get()
    global receive
    receive = receive.get().encode()

    #赋值发邮件所需要的信息
    from_addr = send
    password = passwd
    to_addr = receive
    smtp_server = 'smtp.163.com'  #163邮箱服务器
    msg2 = msgrecv.get('0.0', 'end')


    msg = MIMEText(msg2, 'plain', 'utf-8')  #信息内容
    msg['From'] = _format_addr(u'Python爱好者 <%s>' % from_addr)  #发件人
    msg['To'] = _format_addr(u'%s' % to_addr)    #收件人
    msg['Subject'] = Header(u'来自SMTP的问候……', 'utf-8').encode()  #邮件标题
    server = smtplib.SMTP(smtp_server, 25) #设置服务器
    server.set_debuglevel(1) #调试级别
    server.login(from_addr, password) #登陆
    server.sendmail(from_addr, [to_addr], msg.as_string()) #发送邮件
    server.quit() #退出
    msgrecv.insert('end', u'\n发送成功!') #提示发送成功

#删除输入的邮件信息
def reset():
    msgrecv.delete('1.0','end')


framButton = tk.Frame(root)
send=tk.Button(framButton, text='发送', command=sendEmail, bg = 'green').pack(side = 'left')
reset=tk.Button(framButton, text='取消', command=reset).pack(side = 'left')
quit=tk.Button(framButton, text='退出', command=root.quit, bg = 'red').pack(side = 'right')
framButton.pack()

root.mainloop()
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值