wxpython中文教程之发送邮件的例子

发布时间:2020-12-28编辑:脚本学堂
一个wxpython发送邮件的脚本,相比python发送邮件的方法,用wxpython实现起来显得更专业,也更易于管理,wxpython中文教程之邮件发送实例,需要的朋友参考下。

一个wxpython用于发邮件的简单脚本

专题:wxpython中文教程

例子:
 

复制代码 代码示例:

#!/usr/bin/python
#coding=utf-8

#tom.py

import wx
import smtplib

EMAIL_ADDRESS = 'laxers@gmail.com'
PASSWORD = **********

class Tom(wx.Dialog):
    def __init__(self, parent, id, title):
        wx.Dialog.__init__(self, parent, id, title,
                           wx.DefaultPosition, wx.Size(400, 420))
       
        panel = wx.Panel(self, -1)
        vbox = wx.BoxSizer(wx.VERTICAL)
        hbox1 = wx.BoxSizer(wx.HORIZONTAL)
        hbox2 = wx.BoxSizer(wx.HORIZONTAL)
        hbox3 = wx.BoxSizer(wx.HORIZONTAL)
        st1 = wx.StaticText(panel, -1, '自:')
        st2 = wx.StaticText(panel, -1, '到:')
        st3 = wx.StaticText(panel, -1, '主题:')
        self.tc1 = wx.TextCtrl(panel, -1, 'laxers@gmail.com',
                               size=(180, -1))
        self.tc2 = wx.TextCtrl(panel, -1, size=(180, -1))
        self.tc3 = wx.TextCtrl(panel, -1, size=(180, -1))
        self.write = wx.TextCtrl(panel, -1, style=wx.TE_MULTILINE)
        button_send = wx.Button(panel, 1, '寄出')
        hbox1.Add(st1, 0, wx.LEFT, 10)
        hbox1.Add(self.tc1, 0, wx.RIGHT, 20)
        hbox2.Add(st2, 0, wx.LEFT, 10)
        hbox2.Add(self.tc2, 0, wx.RIGHT, 35)
        hbox3.Add(st3, 0, wx.LEFT, 10)
        hbox3.Add(self.tc3, 0, wx.RIGHT)

        vbox.Add(hbox1, 0, wx.TOP, 10)
        vbox.Add(hbox2, 0, wx.TOP, 10)
        vbox.Add(hbox3, 0, wx.TOP, 10)
        vbox.Add(self.write, 1, wx.EXPAND|wx.TOP|wx.RIGHT|wx.LEFT, 15)
        vbox.Add(button_send, 0, wx.ALIGN_CENTER|wx.TOP|wx.BOTTOM, 20)
        self.Bind(wx.EVT_BUTTON, self.OnSend, id=1)
        panel.SetSizer(vbox)
        self.Center()
       
    def OnSend(self, event):
        sender = self.tc1.GetValue()
        recipient = self.tc2.GetValue()
        subject = self.tc3.GetValue()
        text = self.write.GetValue()
        header = u"From: %srnTo: %srnSubject: %srnrn"
        % (sender, recipient, subject)
        message = header + text
        try:
            server = smtplib.SMTP('smtp.gmail.com', 587)
            server.ehlo()
            server.starttls()
            server.ehlo()
            server.login(EMAIL_ADDRESS, PASSWORD)
            server.sendmail(sender, recipient, message)
            server.quit()
            dlg = wx.MessageDialog(self, '电子邮件发送成功', '成功',
                                   wx.OK|wx.ICON_INFORMATION)
            dlg.ShowModal()
            dlg.Destroy()
           
        except smtplib.SMTPException, error:
            dlg = wx.MessageDialog(self, '发送电子邮件失败', '错误',
                                   wx.OK|wx.ICON_ERROR)
            dlg.ShowModal()
            dlg.Destroy()

class MyApp(wx.App):
    def OnInit(self):
        dlg = Tom(None, -1, 'Tom')
        dlg.ShowModal()
        dlg.Destroy()
        return True
       
app = MyApp(0)
app.MainLoop()

要导入(import) smtp 模块来处理电子邮件.
import smtplib

发自(From)、发往(To)以及主题(Subject)选项必须用回车(return)和新行(newline)分开. 这个奇怪的规定是由RFC 821规范所要求的.
所以,必须遵守这个规定.
 

复制代码 代码示例:
header = u"From: %srnTo: %srnSubject: %srnrn"
 % (sender, recipient, subject)

接着,创建了一个 SMTP 连接. 在这里指定你的设置. 每个 ISP 都会提供给你相应的 POP 和 SMTP 服务器名字.
在这个例子中, 指定了“smtp.gmail.com”以及端口号 587.
通过调用 sendmail() 方法,邮件就发送出去了. 最后,要用 quit() 方法来退出连接.
 

复制代码 代码示例:
server.login(EMAIL_ADDRESS, PASSWORD)
server.sendmail(sender, recipient, message)
server.quit()