以下是一个使用 wxPython 4.2 开发的简单邮件客户端程序,支持编写邮件、添加附件和发送邮件功能:
编写 eMailClient_wx.py 如下
import os
import wx
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
class EmailClient(wx.Frame):
def __init__(self):
super().__init__(None, title="邮件客户端", size=(1000, 600))
# 初始化附件列表
self.attachments = []
# 创建主面板
panel = wx.Panel(self)
vbox = wx.BoxSizer(wx.VERTICAL)
# 服务器设置
server_box = wx.StaticBox(panel, label="SMTP服务器设置")
server_sizer = wx.StaticBoxSizer(server_box, wx.VERTICAL)
server_grid = wx.FlexGridSizer(cols=2, vgap=10, hgap=10)
server_grid.Add(wx.StaticText(panel, label="SMTP服务器:"), 0, wx.ALIGN_CENTER_VERTICAL)
self.smtp_server = wx.TextCtrl(panel, value="smtp.qq.com")
server_grid.Add(self.smtp_server, 1, wx.EXPAND)
server_grid.Add(wx.StaticText(panel, label="端口:"), 0, wx.ALIGN_CENTER_VERTICAL)
self.port = wx.TextCtrl(panel, value="465")
server_grid.Add(self.port, 1, wx.EXPAND)
server_grid.Add(wx.StaticText(panel, label="邮箱账号:"), 0, wx.ALIGN_CENTER_VERTICAL)
self.email = wx.TextCtrl(panel)
server_grid.Add(self.email, 1, wx.EXPAND)
server_grid.Add(wx.StaticText(panel, label="密码:"), 0, wx.ALIGN_CENTER_VERTICAL)
self.password = wx.TextCtrl(panel, style=wx.TE_PASSWORD)
server_grid.Add(self.password, 1, wx.EXPAND)
server_sizer.Add(server_grid, 1, wx.EXPAND|wx.ALL, 10)
# 邮件内容
mail_box = wx.StaticBox(panel, label="邮件内容")
mail_sizer = wx.StaticBoxSizer(mail_box, wx.VERTICAL)
mail_grid = wx.FlexGridSizer(cols=2, vgap=10, hgap=10)
mail_grid.AddGrowableCol(1, 1)
mail_grid.Add(wx.StaticText(panel, label="收件人:"), 0, wx.ALIGN_CENTER_VERTICAL)
self.to_email = wx.TextCtrl(panel)
mail_grid.Add(self.to_email, 1, wx.EXPAND)
mail_grid.Add(wx.StaticText(panel, label="主题:"), 0, wx.ALIGN_CENTER_VERTICAL)
self.subject = wx.TextCtrl(panel)
mail_grid.Add(self.subject, 1, wx.EXPAND)
mail_grid.Add(wx.StaticText(panel, label="附件:"), 0, wx.ALIGN_CENTER_VERTICAL)
attachment_sizer = wx.BoxSizer(wx.HORIZONTAL)
self.attachment_list = wx.ListBox(panel, size=(-1, 60))
attachment_sizer.Add(self.attachment_list, 1, wx.EXPAND)
btn_add = wx.Button(panel, label="添加附件")
btn_add.Bind(wx.EVT_BUTTON, self.on_add_attachment)
attachment_sizer.Add(btn_add, 0, wx.LEFT, 5)
btn_remove = wx.Button(panel, label="移除")
btn_remove.Bind(wx.EVT_BUTTON

最低0.47元/天 解锁文章
2057

被折叠的 条评论
为什么被折叠?



