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()
python邮件SMTP的GUI编程的更多相关文章
- python大法好——ython GUI编程(Tkinter)
Python GUI编程(Tkinter) Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的 ...
- Python GUI编程--Tkinter
今天看到了GUI编程,书上推荐用wxPython,去官网上看了看,发现Windows的最高支持到2.7,我用的是3.4版本,咋办,用自带的库--Tkinter呗,它是Python的默认GUI库,几乎是 ...
- 用 eric6 与 PyQt5 实现python的极速GUI编程(系列01)--Hello world!
[题记] 我是一个菜鸟,这个系列是我的学习笔记. PyQt5 出来有一段时间了, PyQt5 较之 PyQt4 有一些变化,而网上流传的几乎都是 PyQt4 的教程,照搬的话大多会出错. eric6 ...
- Python GUI编程各种实现的对比
Python GUI编程各种实现的对比 从 Python 语言的诞生之日起,就有许多优秀的 GUI 工具集整合到 Python 当中,这些优秀的 GUI 工具集,使得 Python 也可以在图形界面编 ...
- Python的GUI编程(TK)
TK在大多数 Unix平台.Windows平台和Macintosh系统都是预装好的,TKinter 模块是 Tk GUI 套件的标准Python接口.可实现Python的GUI编程. Tkinter模 ...
- Python gui编程pyQt5安装步骤t
Python gui编程pyQt5安装步骤 pip install PyQt5 Pip3 install PyQt5 https://riverbankco ...
- Python gui编程pyQt5安装步骤
Python gui编程pyQt5安装步骤 =============================== -m PyQt5.uic.pyuic $FileName$ -o $FileNameWit ...
- Python GUI 编程
Python GUI编程(Tkinter) Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的 ...
- Python GUI编程(Tkinter) windows界面开发
Python实现GUI简单的来说可以调用Tkinter库,这样一般的需求都可以实现,显示简单的windows窗口代码如下: python_gui.py 1 #!C:\Python27\python.e ...
随机推荐
- Android项目实战(三十四):蓝牙4.0 BLE 多设备连接
最近项目有个需求,手机设备连接多个蓝牙4.0 设备 并获取这些设备的数据. 查询了很多资料终于实现,现进行总结. ------------------------------------------- ...
- MySQL整数类型说明 int(5) vs int(7)
今天突然发现, mysql 中int(1)和tinyint(1)中的1只是指定显示长度,并不表示存储长度,只有字段指定zerofill时有用.位数限制基本没有意义. int(5) 这里的5表示的是 最 ...
- epoll全面讲解:从实现到应用
多路复用的适用场合 • 当客户处理多个描述符时(例如同时处理交互式输入和网络套接口),必须使用I/O复用. • 如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用 ...
- Git 入门篇
什么是Git Git是Linux发明者Linus开发的一款新时代的版本控制系统. Git安装 Mac:https://sourceforge.net/projects/git-osx-instal ...
- ASP.NET Core的身份认证框架IdentityServer4(7)- 使用客户端证书控制API访问
前言 今天(2017-9-8,写于9.8,今天才发布)一口气连续把最后几篇IdentityServer4相关理论全部翻译完了,终于可以进入写代码的过程了,比较累.目前官方的文档和Demo以及一些相关组 ...
- 运行mvn install时跳过Test
1.1 方法一 <project> [...] <build> <plugins> <plugin> <groupId>org.apache ...
- [C#] .Net Core 全局配置读取管理方法 ConfigurationManager
最近在学习.Net Core的过程中,发现.Net Framework中常用的ConfigurationManager在Core中竟然被干掉了. 也能理解.Core中使用的配置文件全是Json,不想F ...
- 201521123100《Java程序设计》 第10周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. A: 2. 书面作业 本次PTA作业题集异常.多线程 1.finally 题目4-2 1.1 截图你的提交结 ...
- Eclipse rap 富客户端开发总结(7) : 如何修改rap的样式
1. Rap样式原理 Rap的界面样式目前是以css来配置的,程序启动后加载相应的css配置文件再对组件进行样式设置,界面上的所有组件 Label button composit等的样式最开始都是通 ...
- linux c函数指针的应用
头文件:1.h #include<stdio.h> int nul_func(); int test1(int a,int b); int test2(int a,int b,int c) ...