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.用户名必须带后缀,例如:[email protected],   [email protected]
        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

时间: 2024-10-21 04:09:56

win7/64+python3.4+pyinstall3+tkinter+smtp=图形界面群发邮件客户端的相关文章

Ubuntu12.04 安装 图形界面 SVN客户端 Rabbitvcs

sudo add-apt-repository ppa:rabbitvcs/ppa sudo apt-get update sudo apt-get install rabbitvcs-core rabbitvcs-nautilus3 rabbitvcs-gedit rabbitvcs-cli killall nautilus

[原创]win7/64位系统+python3.7.2下安装wordcloud库失败之解决——一个莫名其妙的方法

当前环境: win7/64位系统 python3.7.2 pip-19.2.1 使用pip install wordcould安装时出现错误,提示: 尝试方法①:考虑更换其他安装源 提示没有变化,仍然提示没有找到分发版本 -----------强行插入的分割线------------------- (更新一波:突然发现当初pip install worldcloud是把名字敲错了啊,也许当时直接就能装上了啊Orz手动滑稽) (后面的方法worldcloud没有敲错是把下载的whl文件直接拖进cm

win7/64+pip+pygame=pygame安装

2016/01/09 安装pygame win7/64,之前python版本为3.4 pygame下载地址: http://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame 因为需要兼容,所以下载pygame-1.9.2a0-cp34-none-win_amd64.whl 适合Python3.4的版本文件名中包含cp34,适合64位操作系统的版本,文件名中包含amd64: 选择开始>运行,输入cmd打开命令提示符,在命令提示符中输入: pip install

在Win7 64位电脑上安装Sql Server 2008 R2 Express

安装环境说明: 操作系统:Win7 64位 英文版 安装步骤: 1.准备安装文件 下载网址:https://www.microsoft.com/zh-CN/download/details.aspx?id=30438 1).SQLEXPR_x64_ENU.ex 2).SQLManagementStudio_x64_ENU.exe 2.先安装一些必要组件 网上查,有的说需先安装.Net Framwork3.5,IIS等,我在安装的过程中,也是遵循这个步骤. 3.首先安装SQLEXPR_x64_EN

win7 64位安装redis 及Redis Desktop Manager使用

win7 64位安装redis 及Redis Desktop Manager使用     喻高咏 论坛徽章: 3 写基于dapper的一套自动化程序,看到 mgravell的另一个项目,StackExchange.Redis,之前在.NET上用过一段时间redis,不过一直是其它的驱动开发包,这个根据作者介绍,是个高性能的线程安全的.NET c#开发redis客户端的库.说的很吊,不过我确信mgravell出品的东西都是精品.说多无益,先把redis在win上的开发环境搭一下.redis官方没有

win7 64位 ,安装配置cx_Oracle,遇到的一些问题及解决方法

首先安装配置时,必须把握一个点,就是版本一致!包括:系统版本,python版本,oracle客户端的版本,cx_Oracle的版本,然后安装配置就容易了! 因为我的系统是win7 64位,python版本也是64位的,所以下载安装的Oracle Client 也是64位 10g的,相应的cx_Oracle 也要是64位10g的,当然也要注意python的版    本python2.X还是python3.X,也要下相应的版本的 1.oracle client 下载地址:http://www.ora

win7的python3.5安装numpy包

1.你需要先确保已经安装了pip(因为我是我们需要用pip安装numpy包),我在cmd里面输入pip能显示pip的有关信息,所以我已经安装了pip了(其实是python3.x自带了pip) 如果没有安装pip的,按照如下方式安装pip python -m pip install -U pip 安装完毕后,记得在window的环境变量PATH里面添加pip.exe的路径(pip.exe文件一般在python安装包的script目录下.) 2 接下来是下载numpy包,这个到https://pyp

python2 tkinter图形界面简述

PYTHON2 Tkinter图形界面简述 目的:毕设需要做出来简易的图形用户界面,有简单的输入输出框,网上的教程都太复杂,自己整理了一个出来 1.Tkinter模块 python2自带,python3为tkinter库 from Tkinter import *#调用模块 root=TK()#创建一个窗口 root.configure(background='black')#窗口背景颜色 2.Title标题 该窗口的标题 root.title=('any title is ok') 3.Lab

part11-2 Python图形界面编程(Tkinter常用组件、对话框(Dialog)、菜单、Canvas绘图)

五. Tkinter 常用组件 Tkinter 各组件的详细用法还需要掌握,也就是掌握各个“积木块”的的详细功能. 1. 使用 ttk 组件 在前面直接使用的 tkinter 模块下的 GUI 组件看上去并不美观.为此 Tkinter 引了一个 ttk 组件作为补充,并使用功能更强大的 Combobox 取代原来的 Listbox,且新增了 LabeledScale(带标签的Scale).Notebook(多文档窗口).Progressbar(进度条).Treeview(树)等组件. ttk 是