懒人必备Python代码之自动发送邮件
作者:winfredzhang 发布时间:2022-08-31 20:17:41
痛点
在传统的工作中,发送会议纪要是一个比较繁琐的任务,需要手动输入邮件内容、收件人、抄送人等信息,每次发送都需要重复操作,不仅费时费力,而且容易出现疏漏和错误。
但是,有了这个程序,员工们就可以轻松地将发送会议纪要的任务交给计算机来完成。程序可以自动读取当天的日期,作为邮件标题,收件人和抄送人也可以事先设定好,不需要每次手动输入。通过简单地填写邮件正文和附件,员工们就可以一键发送会议纪要,大大提高了工作效率和准确性。
因此,这个程序可以让员工解脱出来,将更多的时间和精力投入到其他更加重要的工作中,提升工作效率和工作质量,为企业发展做出更大的贡献。
应用场景
会议纪要自动发送:对于每周例会或者每月汇报会议等重要会议,通常需要发送会议纪要给参会人员和相关部门,这个程序可以自动发送会议纪要,减少手动操作的时间和错误,提高工作效率。
招投标文件发送:在企业进行招投标时,需要将招标文件发送给潜在的投标人,这个程序可以自动发送招标文件,避免手动输入邮件地址和邮件内容的繁琐操作,提高投标工作的效率。
活动邀请函发送:对于企业的各种活动,如产品发布会、客户庆祝会等,需要发送邀请函给参加者,这个程序可以自动发送邀请函,减少重复的手动操作和错误,提高工作效率。
项目进度汇报发送:对于项目管理人员,需要定期向管理层和项目组成员发送项目进度汇报,这个程序可以自动发送项目进度汇报,节约时间和精力,提高项目管理效率。
总之,这个程序可以应用于很多需要发送邮件的场景,无论是企业内部的还是与外部的交流沟通,都可以通过这个程序来提高工作效率。
源代码
import wx
import datetime
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.**init**(self, None, title="发送邮件", size=(400, 300))
panel = wx.Panel(self)
# 创建控件
self.title = wx.StaticText(panel, label="邮件标题:", pos=(20, 20))
self.title_input = wx.TextCtrl(panel, pos=(100, 20), size=(250, -1))
self.memo = wx.StaticText(panel, label="邮件正文:", pos=(20, 60))
self.memo_input = wx.TextCtrl(panel, style=wx.TE_MULTILINE, pos=(100, 60), size=(250, 100))
self.send_button = wx.Button(panel, label="发送", pos=(150, 200), size=(80, -1))
# 设置默认值
today = datetime.date.today().strftime("%Y-%m-%d")
self.title_input.SetValue(today + "会议纪要")
#显示对齐的多行文本
self.memo_input.SetValue("大家好:附件中是今天的会议纪要")
# 绑定事件
self.send_button.Bind(wx.EVT_BUTTON, self.on_send)
def on_send(self, event):
# 获取邮件信息
title = self.title_input.GetValue()
memo = self.memo_input.GetValue()
# 设置邮件内容
message = MIMEMultipart()
message['From'] = "skruggswzq@zusmail.com"
message['To'] = "lgalperinpyf@zusmail.com,mtarasciovgz@zusmail.com,sharvestkxw@zusmail.com,ebazinetbto@zusmail.com,spatryjpn@zusmail.com,dsittnerxko@zusmail.com,tbrassilqoy@zusmail.com,ihartgravesvmt@zusmail.com"
message['Cc'] = "greihlingmjo@zusmail.com"
message['Subject'] = title
message.attach(MIMEText(memo))
# 添加附件
filepath = "D:\\\\每周例会纪要.xlsx"
with open(filepath, "rb") as f:
attachment = MIMEApplication(f.read(), _subtype="xlsx")
attachment.add_header('Content-Disposition', 'attachment', filename=filepath.split("\\\\")[-1])
message.attach(attachment)
# 发送邮件
smtp = smtplib.SMTP()
smtp.connect("smtp.exmail.qq.com")
smtp.login("skruggswzq@zusmail.com", "password") # 请替换为您的邮箱密码
smtp.sendmail("skruggswzq@zusmail.com", message['To'].split(",") + message['Cc'].split(","), message.as_string())
smtp.quit()
# 提示发送成功
wx.MessageBox("邮件发送成功!", "提示")
app = wx.App()
frame = MyFrame()
frame.Show()
app.MainLoop()
代码说明
段代码是一个 Python 程序,使用 wxPython 模块创建了一个 GUI 界面,其中包含了邮件标题、正文和发送按钮等控件。当用户点击发送按钮时,程序会自动将邮件发送给指定的收件人,并弹出一个提示框提示用户发送成功。
以下是代码的大致流程:
导入所需的 Python 模块,包括 wxPython、datetime、smtplib、MIMEText、MIMEMultipart 和 MIMEApplication 等模块。
创建一个 MyFrame 类,继承自 wx.Frame,用于创建 GUI 界面。
在 MyFrame 类中创建邮件标题、正文和发送按钮等控件,并设置默认值和绑定事件。
当用户点击发送按钮时,程序会调用 on_send() 方法,获取邮件标题和正文等信息,然后将邮件内容封装成 MIMEMultipart 对象。
程序会读取指定的附件文件,并将附件添加到邮件中。
程序会连接指定的 SMTP 服务器,并使用指定的邮箱账号和密码进行登录。
程序会调用 SMTP 对象的 sendmail() 方法将邮件发送给指定的收件人。
发送成功后,程序会弹出一个提示框,提示用户发送成功。
最后,程序进入主循环,等待用户操作界面。
需要注意的是,程序中的一些字符串(如邮箱地址、SMTP 服务器地址、附件路径等)都是需要根据实际情况进行替换的。另外,这段代码并没有提供完整的异常处理,实际使用时需要根据实际情况进行修改。
效果如下所示
来源:https://blog.csdn.net/winniezhang/article/details/130207928


猜你喜欢
- 本文实例讲述了Python实现网络端口转发和重定向的方法。分享给大家供大家参考,具体如下:【任务】需要将某个网络端口转发到另一个主机(for
- 本文实例为大家分享了Python爬取最好大学网大学排名的具体代码,供大家参考,具体内容如下源代码:#-*-coding:utf-8-*- &
- 本文实例讲述了Python走楼梯问题解决方法。分享给大家供大家参考,具体如下:# -*- coding:utf-8 -*-#!python3
- 这是今天在温习lambda表达式的时候想到的问题,众所周知C系列语言中的 三元运算符(?:)是一个非常好用的语句,关于C中的三元运算符表达式
- 前言bufio包实现了带缓冲的I/O,它封装了io.Reader和io.Writer对象,然后创建了另外一种对象(Reader或Writer
- Python 条件语句Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。可以通过下图来简单了解
- 一、理解装饰器所有东西都是对象(函数可以当做对象传递)由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。de
- 前言最近在python里面用json读取json文件,可是老是不成功,特此记录一下。预备知识:def load(fp, cls=None,
- JetBrains网址:https://www.jetbrains.com/shop/eform/students注册成功后,在校期间都可以
- 编程是数据科学中不可或缺的技能,虽然创建脚本来执行基本功能很容易,但编写大规模可读性良好的代码需要更多的思考。关于PEP-8pycodest
- # -*-coding:utf-8-*-import sys, os'''将当前进程fork为一个守护进程注意:如果
- 基本示例?计算属性允许我们声明性地计算衍生值。然而在有些情况下,我们需要在状态变化时执行一些“副作用&rdquo
- a=1 #1 为对象,def func(x): print('x的地址{}'.form
- Python的绘图库也允许用户创建优雅的图形,本章给大家介绍的是关于ggplot绘制画图的技巧,ggplot2建立在grid系统上,这个系统
- 下面是一段产生log-normal分布的代码,以此进行说明。clear all;clc;for t=1:100 Traffic(t) =cu
- Python中numpy数组的合并有很多方法,如- np.append() - np.concatenate() - np.stack()
- 代码如下# -*- coding:utf-8 -*-import cv2import numpy as npfrom tkinter imp
- Python中的函数调用与c++不同的是将this指针直接作为self当作第一个形参进行处理,从而将静态函数与实例方法的调用形式统一了起来。
- Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站!学习django学得超级吃力
- 今天启动SQLServer2000时报1053错误 错误如下所示: 发生错误 1053-(服务没有及时响应或控制请求。),此时正在 MSSQ