python2.7 TK界面邮件发送(支持中文)

来源:互联网 发布:中国最牛的程序员 编辑:程序博客网 时间:2024/06/06 20:05
在别人代码基础上改的,163邮箱测试能用。
#!/usr/bin/env python#coding=utf-8'''支持中文邮件的发送'''from smtplib import *from email.mime.text import MIMETextfrom Tkinter import *import tkMessageBoximport stringclass loginPage(object):    def __init__(self, master, info='Mail Send System'):        self.master = master        self.mainlabel = Label(master, text=info, justify=CENTER)        self.mainlabel.grid(row=0, columnspan=3)        self.user = Label(master, text='username', borderwidth=2)        self.user.grid(row=1, sticky=W)        self.pwd = Label(master, text='password', borderwidth=2)        self.pwd.grid(row=2, sticky=W)        self.userEntry = Entry(master)        self.userEntry.grid(row=1, column=1, columnspan=2)        self.userEntry.focus_set()        self.pwdEntry = Entry(master, show='*')        self.pwdEntry.grid(row=2, column=1, columnspan=2)        self.loginButton = Button(master, text='Login', borderwidth=2, command=self.login)        self.loginButton.grid(row=3, column=1)        self.clearButton = Button(master, text='Clear', borderwidth=2, command=self.clear)        self.clearButton.grid(row=3, column=2)    def login(self):        self.username = self.userEntry.get().strip()        self.passwd = self.pwdEntry.get().strip()        if len(self.username) == 0 or len(self.passwd) == 0 or '@' not in self.username:            tkMessageBox.showwarning('警告', '用户名或者密码为空或邮件格式不正确')            self.clear()            self.userEntry.focus_set()            return        self.getSmtpHost()        self.connect()    def connect(self):        'this method will try to connet the SMTP server according the current user'        HOST = 'smtp.' + self.smtp +'.com'        try:            self.mySMTP = SMTP(HOST)            self.mySMTP.login(self.username, self.passwd)        #except SMTPConnectError:        except Exception, e:            tkMessageBox.showerror('连接错误', '%s' % e)            return        self.mySendMail = sendMail(self.master, self.mySMTP, self.username)    def clear(self):        self.userEntry.delete(0, END)        self.pwdEntry.delete(0, END)    def getSmtpHost(self):        'this method try to obtian the SMTP HOST according the user account'        firstSplit = self.username.split('@')[1]        self.smtp = firstSplit.split('.')[0]class sendMail(object):    'my sendemail class'    def __init__(self, master, smtp='', sender=''):        self.smtp = smtp        self.sender = sender        self.sendPage = Toplevel(master)        self.sendToLabel = Label(self.sendPage, text='send to:')        self.sendToLabel.grid()        self.sendToEntry = Entry(self.sendPage)        self.sendToEntry.grid(row=0, column=1)        self.subjectLabel = Label(self.sendPage, text='subject:')        self.subjectLabel.grid(row=1, column=0)        self.subjectEntry = Entry(self.sendPage)        self.subjectEntry.grid(row=1, column=1)        self.fromToLabel = Label(self.sendPage, text='from to:')        self.fromToLabel.grid(row=2, column=0)        self.formToAdd = Label(self.sendPage, text=self.sender)        self.formToAdd.grid(row=2, column=1)        self.sendText = Text(self.sendPage)        self.sendText.grid(row=3, column=0, columnspan=2)        self.sendButton = Button(self.sendPage, text='send', command=self.sendMail)        self.sendButton.grid(row=4, column=0)        self.newButton = Button(self.sendPage, text='new mail', command=self.newMail)        self.newButton.grid(row=4, column=1)    def getMailInfo(self):        self.sendToAdd = self.sendToEntry.get().strip()        self.subjectInfo = self.subjectEntry.get().strip()        self.sendTextInfo = self.sendText.get(1.0, END)    def sendMail(self):        self.getMailInfo()        content = self.sendTextInfo        msg = MIMEText(content,_charset='utf-8')        msg['Subject'] = self.subjectInfo        msg['From'] = self.sender        msg['To'] = self.sendToAdd        smptSP = ('smtp.163.com',465)        try:            self.smtp.sendmail(self.sender,self.sendToAdd,msg.as_string())            print u'发送成功.........'          except SMTPException as e:            print 'Error:',u'邮件无法发送!\n',        tkMessageBox.showinfo('提示', '邮件已发送成功!')    def newMail(self):        self.sendToEntry.delete(0, END)        self.subjectEntry.delete(0, END)        self.sendText.delete(1.0, END)if __name__ == '__main__':    root = Tk()    root.title('简易发送邮件程序')    myLogin = loginPage(root)    #root.wait_window(myLogin.mySendMail.sendPage)    mainloop()

阅读全文
0 0
原创粉丝点击