win7/64+python3.4+pyinstall3+tkinter+smtp=图形界面群发邮件客户端
#file: GUI_MAIL.py
#Date: 2016/01/07
#Author: lao_wan
import tkinter
import smtplib
from email.mime.text import MIMEText
from configparser import ConfigParser
import os
import tkinter.filedialog
import re
class Window:
def __init__(self, root):
#Label标签
Host = tkinter.Label(root, text = '服务器')
Port = tkinter.Label(root, text = '端口')
User = tkinter.Label(root, text = '用户名')
Passwd = tkinter.Label(root, text = '密码')
Subject = tkinter.Label(root, text = '主题')
To = tkinter.Label(root, text = '收件人')
MailFile = tkinter.Button(root, text = '浏览', command = self.MailFile)#调用MailFile函数(得到收件人群组)
#定义Label的位置
Host.place(x = 5, y = 5)
Port.place(x = 200, y = 5)
User.place(x = 5, y = 30)
Passwd.place(x = 200, y = 30)
Subject.place(x = 5, y = 55)
To.place(x = 5, y = 83)
#定义浏览按钮的位置
MailFile.place(x = 345, y = 80)
#Entry文本框
self.entryHost = tkinter.Entry(root)
self.entryPort = tkinter.Entry(root)
self.entryUser = tkinter.Entry(root)
self.entryPasswd = tkinter.Entry(root, show = '*')
self.entryTo = tkinter.Entry(root, width = 40)
self.entrySub = tkinter.Entry(root, width = 40)
#读取配置文件
config = ConfigParser()
config.read('smtp.conf')
Host = config.get('setting','Host')
Port = config.get('setting','Port')
User = config.get('setting','User')
Passwd = config.get('setting','Passwd')
#将配置文件里的值放入文本框
self.entryHost.insert(tkinter.END,Host)
self.entryPort.insert(tkinter.END,Port)
self.entryUser.insert(tkinter.END,User)
self.entryPasswd.insert(tkinter.END,Passwd)
#文本框的位置
self.entryHost.place(x = 50, y = 5)
self.entryPort.place(x = 235, y = 5)
self.entryUser.place(x = 50, y = 30)
self.entryPasswd.place(x = 235, y = 30)
self.entryTo.place(x = 50, y = 83)
self.entrySub.place(x = 50, y = 55)
#发送按钮,调用MailSend函数
self.mailsend = tkinter.Button(root,text='开始发送',command=self.MailSend)
#调用SaveConfig函数保存配置
self.save = tkinter.Button(root,text='保存配置',command=self.SaveConfig)
#调用Help函数打开帮助
self.help = tkinter.Button(root,text='使用帮助',command=self.Help)
#三个按钮的位置
self.mailsend.place(x=430,y=20)
self.save.place(x=430,y=60)
self.help.place(x=520,y=60)
#多行文本框,用来输入邮件内容
self.text = tkinter.Text(root)
self.text.place(y=120)
def MailFile(self):
#该函数用来读取放有邮件地址的文本文件
r = tkinter.filedialog.askopenfilename(title='打开文件',filetypes=[('txt','*.txt')])
if r :
self.entryTo.delete(0,tkinter.END)
self.entryTo.insert(tkinter.END,r)
def MailSend(self):
#使用get()获取各文本框中的内容
host = self.entryHost.get()
port = self.entryPort.get()
user = self.entryUser.get()
pw = self.entryPasswd.get()
fromaddr = user
subject = self.entrySub.get()
text = self.text.get(1.0,tkinter.END)
#读取文件
mailfile = open(self.entryTo.get(),'r')
mailaddr = mailfile.read()
#使用正则表达式分割字符串,这里用逗号分割
mail = re.split(',',mailaddr)
#设置邮件内容为utf-8编码
msg = MIMEText(text,_charset='utf-8')
msg['From'] = fromaddr
msg['Subject'] = subject
smtp = smtplib.SMTP()
smtp.connect(host,port)
smtp.login(user,pw)
#使用循环读取分割出来的邮件地址,同时实现邮件群发
for toaddr in mail:
msg['To'] = toaddr
smtp.sendmail(fromaddr,toaddr,msg.as_string())
smtp.close()
#保存设置
def SaveConfig(self):
#获取文本框内容
Host = self.entryHost.get()
Port = self.entryPort.get()
User = self.entryUser.get()
Passwd = self.entryPasswd.get()
#对需要保存的配置写入文件stmp.conf进行保存
config = ConfigParser()
config.add_section('setting')
config.set('setting','Host',Host)
config.set('setting','Port',Port)
config.set('setting','User',User)
config.set('setting','Passwd',Passwd)
config.write(open('smtp.conf','w'))
#使用帮助
def Help(self):
help_str = """
1.服务器是SMTP服务器,QQ邮箱为smtp.qq.com, 126邮箱为smtp.126.com
2.用户名必须带后缀,例如:12345@qq.com, 12345@126.com
3.收件人使用txt文件,邮件地址有“,”分隔开
"""
self.text.insert(tkinter.END,help_str)
#检查配置文件是否存在,不存在则创建
if(not os.path.isfile('smtp.conf')):
config = ConfigParser()
config.add_section('setting')
config.set('setting','Host','smtp.qq.com')
config.set('setting','Port','25')
config.set('setting','User','user')
config.set('setting','Passwd','passwd')
config.write(open('smtp.conf','w'))
root = tkinter.Tk()
root.title("GUI_MAIL") #APP标题
root.geometry("650x500")
window = Window(root)
root.mainloop()
源地址:http://www.cnblogs.com/lao-wan/p/5111808.html
win7/64+python3.4+pyinstall3+tkinter+smtp=图形界面群发邮件客户端的更多相关文章
- Python图形界面Tk
最近在学习Python,在使用Tkinter做图形界面时遇到了几个小问题,网上查了一下,在Python2.x导入的是Tkinter,Python3则是tkinter.而且导入的simpledialog ...
- java 图形界面 Socket编程
一.使用图形界面实现客户端服务器端的通信: 上代码: 服务器端代码: package cn.MyNET; import java.io.*; import java.net.*; import jav ...
- Ubuntu远程登陆、SSH图形界面、WOL远程唤醒
本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 实现目标:通过路由器配置路由路径,将拨号获取的公网IP地址指向局域网Ubuntu服务器.家里有 ...
- win7+64位笔记本 python3.6安装opencv3
1.直接在cmd窗口下用pip,输入 pip install opencv-python 安装成功是如下界面: 不放心还可以验证下,方法是cmd窗口下输入python,然后输入 import cv2 ...
- 怎么安装Scrapy框架以及安装时出现的一系列错误(win7 64位 python3 pycharm)
因为要学习爬虫,就打算安装Scrapy框架,以下是我安装该模块的步骤,适合于刚入门的小白: 一.打开pycharm,依次点击File---->setting---->Project---- ...
- 2018-09-28 用Python3和tkinter开发简单图形界面程序
源码库: program-in-chinese/wubi_code_editor 起因在这里. 由于此项目和汉字相关, 个人也想尝试Python的图形界面开发, 于是开始尝试. 遇到的一个坑. 用户测 ...
- Win7 64位下sql server链接oracle的方法
继上一次mysql同步sql server后,这一次需要将Oracle同步到sql server上来,方案相似,只是在sql server链接oracle的时候费了很多时间. 一.测试环境 本方案实现 ...
- Win7 64位安装MySQL
1.Win7 64位 安装MySQL5.5版本 安装文件的执行:会提示“已经停止工作”: 2.我下载了mysql-installer-community-5.7.11.0.msi,可以安装成功,中途需 ...
- win7的python3.5安装numpy包
1.你需要先确保已经安装了pip(因为我是我们需要用pip安装numpy包),我在cmd里面输入pip能显示pip的有关信息,所以我已经安装了pip了(其实是python3.x自带了pip) 如果没有 ...
随机推荐
- Android安装包apk文件在某些版本操作系统上安装解析包出错问题的解决办法
当我们将Android升级功能的中的下载新版本apk文件存放在data/data/xxx.apk位置时,在有的些版本的手机中安装可能会出现安装包解析出错的问题,对于该问题的解决方案是提升该文件的权限. ...
- 2-13 搭建LAMP环境并部署Ucenter和Ucenter-home网站
环境: VMware Virtual Machine : XGan63.cn IP: 192.168.31.63 (Bridge) 已配置本地yum源 ---> /mnt 已配置网络yum源 - ...
- 使用PMD进行代码审查(转)
原文地址:使用PMD进行代码审查 很久没写博客了,自从上次写的设计模式的博客被不知名的鹳狸猿下架了一次之后兴趣大减,那时候就没什么兴致写博客了,但是这段时间还没有停下来,最近也在研究一些其他的东西,目 ...
- Windows 7 IIS7.5上部署MVC实例
这段时间在用MVC写一个导游网站,在Window7上部署的时候,遇到和处理了一些问题. 现将完整的过程整理出来,供大家参考: 一.部署准备: 1.安装Microsoft .net FrameWork ...
- bzoj1037
题解: 定义f[i][j][a][b]表示已经排了i个人 还能拍j个男的(那么就还有m-i+j个是女的) 还能连续拍a个男的,b个女的 我是递推的 考虑后面一个拍男的还是女的 注意要判断边界 代码: ...
- halcon之共线连接union_collinear_contours_xld
union_collinear_contours_xld 很多时候当我们用edges_sub_pix, threshold_sub_pix 等算子得到边缘后,因为有噪声.物体本身断裂等原因 很多边缘 ...
- html和js实现滚动条效果
HTML部分 <!-- 遮罩层 --> <div id="zzc" style="z-index:-1;height:100%;width: 100%; ...
- 基于 React + NodeJS + Express + MongoDB 开发的一个社区系统
还可以, 功能挺全的, 可以作为react开发入门项目 链接 线上站点: 源码地址:
- Mysql查询正在运行的事务以及杀掉它
查询 正在执行的事务:SELECT * FROM information_schema.INNODB_TRX 根据这个事务的线程ID(trx_mysql_thread_id): 可以使用mysql命令 ...
- PyQt4 py2exe 打包 HardwareManager
#!/usr/bin/env python # -*- coding: UTF-8 -*- # 1. 以下代码保存在HardwareManager项目的目录下,名称叫:setup.py: # 2. 打 ...