it编程 > 前端脚本 > Python

使用Python构建带GUI的邮件自动发送工具

5人参与 2025-03-09 Python

1. 项目概述

该程序是一个基于 wxpython 的 gui 工具,允许用户通过直观的界面输入邮件内容、添加收件人、抄送、正文,并自动从指定文件夹中提取附件,最后使用 smtp 发送邮件。

核心功能:

2. 代码结构分析

该程序的主逻辑封装在 emailsenderframe 类中,继承自 wx.frame,负责 gui 组件的创建和事件绑定。

(1)构造函数:初始化窗口与加载配置

class emailsenderframe(wx.frame):
    def __init__(self, parent, title):
        super(emailsenderframe, self).__init__(parent, title=title, size=(800, 600))
        
        # 默认附件文件夹路径
        self.attachment_base_dir = r"c:\mydocs\每周工作"
        
        # 创建配置文件路径
        self.config_file = os.path.join(os.path.expanduser("~"), "email_sender_config.json")
        
        # 默认邮箱设置
        self.smtp_server = "smtp.exmail.qq.com"
        self.smtp_port = 465
        self.from_email = ""
        self.password = ""
        self.use_ssl = true
        
        # 创建界面
        self.create_ui()
        
        # 加载之前保存的配置
        self.load_config()
        
        # 自动查找当前周五的附件
        self.update_attachments()
        
        # 显示窗口
        self.centre()
        self.show()

关键点解析

(2)创建 ui 界面

def create_ui(self):
    panel = wx.panel(self)
    vbox = wx.boxsizer(wx.vertical)
    
    # 邮件标题
    subject_box = wx.boxsizer(wx.horizontal)
    subject_label = wx.statictext(panel, label="标题:")
    self.subject_ctrl = wx.textctrl(panel)
    subject_box.add(subject_label, flag=wx.right, border=8)
    subject_box.add(self.subject_ctrl, proportion=1)
    vbox.add(subject_box, flag=wx.expand | wx.left | wx.right | wx.top, border=10)
    
    # 省略部分代码...
    
    # 设置布局
    panel.setsizer(vbox)

关键点解析

(3)加载和保存用户配置

def load_config(self):
    """加载之前保存的配置"""
    if os.path.exists(self.config_file):
        try:
            with open(self.config_file, 'r', encoding='utf-8') as f:
                config = json.load(f)
                
            self.subject_ctrl.setvalue(config.get('subject', ''))
            self.to_ctrl.setvalue(config.get('to', ''))
            self.cc_ctrl.setvalue(config.get('cc', ''))
            self.body_ctrl.setvalue(config.get('body', ''))
            
            saved_dir = config.get('attachment_base_dir', '')
            if saved_dir and os.path.exists(saved_dir):
                self.attachment_base_dir = saved_dir
                self.folder_ctrl.setvalue(self.attachment_base_dir)
                
            self.smtp_server = config.get('smtp_server', 'smtp.exmail.qq.com')
            self.smtp_port = config.get('smtp_port', 465)
            self.from_email = config.get('from_email', '')
            self.password = config.get('password', '')
            self.use_ssl = config.get('use_ssl', true)
        except exception as e:
            wx.messagebox(f"加载配置时出错: {str(e)}", "错误", wx.ok | wx.icon_error)

关键点解析

(4)获取当前周五的文件夹路径

def get_this_friday_folder(self):
    """获取当前选择的文件夹路径"""
    selected_folder = self.attachment_base_dir

    # 检查文件夹是否存在
    if not os.path.exists(selected_folder):
        wx.messagebox(f"选择的文件夹不存在: {selected_folder}", "错误", wx.ok | wx.icon_error)
        return ""

    return selected_folder

关键点解析

(5)自动查找附件文件

def update_attachments(self):
    """在选定的文件夹中查找所有文件"""
    folder = self.get_this_friday_folder()
    if folder:
        files = glob.glob(os.path.join(folder, "*"))  # 获取所有文件
        self.attach_list.set(files)  # 更新 ui 列表

关键点解析

3. 总结

本项目基于 wxpython 实现了一个邮件发送 gui 工具,整合了 配置管理、自动查找附件、邮件发送 等功能。通过 wxpython 提供的 ui 组件,用户可以直观地输入邮件信息,并快速附加文件进行发送。

技术要点回顾

本代码适用于自动发送周报、批量邮件处理等应用场景,并可进一步扩展。

运行结果

以上就是使用python构建带gui的邮件自动发送工具的详细内容,更多关于python gui邮件发送工具的资料请关注代码网其它相关文章!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

Python中ini配置文件的写入与读取的操作示例

03-09

Python处理HTTP认证的常见方法

03-09

Python中子类继承父类传递参数的方法

03-09

在Python中进行CSV文件的读取与写入操作

03-09

Python中使用Pillow库生成立体文字的图像

03-09

Python和Pygame库开发“小黄狗跑酷”游戏

03-09

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论