Python实用小工具(4)——邮件轰炸机,给朋友搞点乐子(附源码+exe文件)

欢迎来到MatpyMaster!今天我们将使用Python来批量发送邮件,让你的邮件推送变得更加高效。废话不多说,直接开搞!使用声明:

  • 请确保你的邮箱开启了SMTP服务,并获取了授权码。

  • 选择合适的发送间隔,以免触发邮箱的反垃圾机制。

  • 在发送大量邮件时,请确保你的操作是符合法律法规和服务协议的。

  • 此程序仅用于知识学习分享,切勿非法传播以谋取牟利,违者后果自负。

一、授权码

QQ邮箱主页→设置→账号→开启SMTP→手机实名验证后弹出授权码

二、使用教程

①新建一个txt,将需要发送的内容写进去,如下图所示然后会将每行内容依次进行发送。

②登入QQ邮箱,按照上面步骤免费获取授权码,然后将自己邮箱地址和授权码填写进去。

③点击"选择文件"按钮,选择新建的txt文件。

④输入邮件主题、发送间隔以及收件人邮箱地址。

⑤点击"发送",发送成功则会有提示。

⑥点击"终止程序",则会停止发送,但是需要执行完当前循环,也就是把文件整体内容发送一遍后终止。

三、Python源码

from smtplib import SMTP_SSL
from email.header import Header  # 完善邮件内容
from email.mime.text import MIMEText  # 创建邮件格式
import tkinter as tk
from tkinter import filedialog
import threading
import time
class App:def __init__(self, root):self.root = rootself.root.title("公众号/CSDN:MatpyMaster")self.qq_addr_var = tk.StringVar(value='280****708.@qq.com')self.password_var = tk.StringVar(value='看教程免费获取!')self.file_path = tk.StringVar()self.theme_var = tk.StringVar(value='你好,先生!')self.t_var = tk.StringVar(value='1')self.to_addr_var = tk.StringVar(value='')# 设置发送邮件账号和授权码tk.Label(root, text="你的邮箱:").grid(row=0, column=0, pady=5)tk.Entry(root, textvariable=self.qq_addr_var, width=40).grid(row=0, column=1, pady=5)tk.Label(root, text="授权码:").grid(row=1, column=0, pady=5)tk.Entry(root, textvariable=self.password_var, width=40).grid(row=1, column=1, pady=5)# 第一部分:选择txt文件tk.Label(root, text="选择txt文件:").grid(row=2, column=0, pady=5)tk.Entry(root, textvariable=self.file_path, state='disabled', width=40).grid(row=2, column=1, pady=5)tk.Button(root, text="选择文件", command=self.browse_file).grid(row=2, column=2, pady=5)# 第二部分:输入theme参数、t参数和to_addr参数tk.Label(root, text="邮件主题:").grid(row=3, column=0, pady=5)tk.Entry(root, textvariable=self.theme_var, width=40).grid(row=3, column=1, pady=5)tk.Label(root, text="发送间隔(秒):").grid(row=4, column=0, pady=5)tk.Entry(root, textvariable=self.t_var, width=40).grid(row=4, column=1, pady=5)tk.Label(root, text="收件人地址:").grid(row=5, column=0, pady=5)tk.Entry(root, textvariable=self.to_addr_var, width=40).grid(row=5, column=1, pady=5)# 第三部分:执行循环按钮tk.Button(root, text="发送", command=self.start_loop).grid(row=6, column=0, columnspan=3, pady=10)# 第四部分:输出内容tk.Label(root, text="执行结果:").grid(row=7, column=0, pady=5)self.output_text = tk.Text(root, height=10, width=30)self.output_text.grid(row=7, column=1, pady=5, columnspan=2)# 第五部分:终止按钮tk.Button(root, text="终止程序", command=self.stop_loop).grid(row=8, column=0, columnspan=3, pady=10)# 初始化线程变量self.is_running = Falsedef browse_file(self):file_path = filedialog.askopenfilename(filetypes=[("Text files", "*.txt")])if file_path:self.file_path.set(file_path)def loop_function(self):theme = self.theme_var.get()t = int(self.t_var.get())to_addr = self.to_addr_var.get()qq_addr = self.qq_addr_var.get()password = self.password_var.get()while self.is_running:with open(self.file_path.get(), 'r', encoding='utf-8') as file:for line in file:text = line.strip()smtp_server = 'smtp.qq.com'  # smtp是一个服务器  这是一个QQ的服务器# 点击设置  安全中心# 授权码获取  QQ邮箱主页  》设置》账户》开启SMTP》验证之后弹出授权码#  2. 创建一封邮件,设置邮件内容email = MIMEText(text, 'plain', 'utf_8')  # 创建一封邮件email['Subject'] = Header(theme)  # 邮件的主题email['From'] = Header(qq_addr)  # 发件人的邮箱email['To'] = Header(to_addr)  # s收件人的邮箱,这里暂时设置自己的# 链接邮箱服务器qq_email = SMTP_SSL(smtp_server)  # 连接服务器qq_email.login(qq_addr, password)qq_email.sendmail(qq_addr, to_addr, email.as_string())  # 发送邮件qq_email.quit()self.output_text.insert(tk.END, theme + text + '\n' + '发送成功!' + '\n')time.sleep(t)self.output_text.see(tk.END)  # 滚动到底部def start_loop(self):if not self.is_running:self.is_running = Trueself.output_text.delete(1.0, tk.END)  # 清空文本框# 启动线程self.loop_thread = threading.Thread(target=self.loop_function)self.loop_thread.start()def stop_loop(self):self.is_running = Falseif __name__ == "__main__":root = tk.Tk()app = App(root)root.mainloop()

四、exe工具获取

关注公众号发送“邮件快捷助手”免费获取

最后:

如果你想要进一步了解更多的相关知识,可以关注下面公众号联系~会不定期发布相关设计内容包括但不限于如下内容:信号处理、通信仿真、算法设计、matlab appdesigner,gui设计、simulink仿真......希望能帮到你!

5a8015ddde1e41418a38e958eb12ecbd.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/235584.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VBA中类的解读及应用第八讲:实现定时器功能的自定义类事件

《VBA中类的解读及应用》教程【10165646】是我推出的第五套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。 类,是非常抽象的,更具研究的价值。随着我们学习、应用VBA的深入&#xff0…

【PaperReading】5. Open-Vocabulary SAM

Category Content 论文题目 Open-Vocabulary SAM: Segment and Recognize Twenty-thousand Classes Interactively 作者 Haobo Yuan1 Xiangtai Li1 Chong Zhou1 Yining Li2 Kai Chen2 Chen Change Loy1 1S-Lab, Nanyang Technological University 2Shanghai Artificial In…

找不到msvcr120.dll怎样修复,分享4种修复方法

msvcr120.dll是Microsoft Visual C 2012 Redistributable Package的一个关键组件,负责提供C运行时库。许多应用程序在运行时都需要依赖这个库文件。然而,在日常使用过程中,不少用户会遇到msvcr120.dll丢失的问题,导致程序无法正常…

Linux 文件(夹)权限查看

命令 : ls -al ls -al 是一个用于列出指定目录下所有文件和子目录的命令,包括隐藏文件和详细信息。其中,-a 选项表示显示所有文件,包括以 . 开头的隐藏文件,-l 选项表示以列表的形式显示文件的详细信息。 本例中:drwxrwxr-x 为权限细节。 权限细节(Permission detail…

制造业CRM是什么?都有哪些特色功能?

近些年,制造业和别的行业一样,经历过翻天覆地的转型。从以分销为基础到客户至上,所有行业都在确定商业模式的全局性变化。在这样的环境下,不管什么规模的设备制造企业都意识到将创新与技术融进业务流程的必要性。CRM管理系统是促进…

23种设计模式精讲,配套23道编程题目 ,支持 C++、Java、Python、Go

关于设计模式的学习,大家应该还是看书或者看博客,但却没有一个边学边练的学习环境。 学完了一种设计模式 是不是应该去练一练? 所以卡码网 针对 23种设计,推出了 23道编程题目,来帮助大家练习设计模式,地…

leetcode 动态规划(最后一块石头的重量II、目标和、一和零)

1049.最后一块石头的重量II 力扣题目链接(opens new window) 题目难度&#xff1a;中等 有一堆石头&#xff0c;每块石头的重量都是正整数。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < …

异常(C++)

六、异常6.1 传统错误处理&#xff08;如 C语言&#xff09;6.1.1 通过函数返回值处理异常6.1.2 通过远程跳转处理异常 6.2 C的异常处理6.2.1 对传统错误处理的改造 6.3 函数的异常说明6.4 标准异常类 六、异常 异常是指程序运行期间发生的不正常情况&#xff0c;如 new 无法获…

基于web3+solidity的众筹项目

基本配置&#xff1a;node、npm、yarn&#xff0c;安装ganache&#xff0c;chrome&#xff0c;chrome安装插件MetaMask&#xff0c; 主要功能&#xff1a;目的是实现一个简单的众筹平台&#xff0c;允许用户发起筹款项目、捐款、提出使用资金请求以及证明人证明。 部分合约&…

语义解析:如何基于SQL去实现自然语言与机器智能连接的桥梁

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 &#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 语义解析 定义 作用 语义解析的应用场景 场景一&#xff1a; 场景二&#xff1a; 总结语…

数字孪生+可视化技术 构建智慧新能源汽车充电站监管平台

前言 充电基础设施为电动汽车提供充换电服务&#xff0c;是重要的交通能源融合类基础设施。近年来&#xff0c;随着新能源汽车产业快速发展&#xff0c;我国充电基础设施持续增长&#xff0c;已建成世界上数量最多、服务范围最广、品种类型最全的充电基础设施体系。着眼未来新…

强化学习4——动态规划初探

动态规划具体指的是在某些复杂问题中&#xff0c;将问题转化为若干个子问题&#xff0c;并在求解每个子问题的过程中保存已经求解的结果&#xff0c;以便后续使用。实际上动态规划更像是一种通用的思路&#xff0c;而不是具体某个算法。 在强化学习中&#xff0c;被用于求解值函…

Python基础(二十四、JSON和pyecharts)

文章目录 一、JSON1.JSON介绍2.JSON格式数据转化3.示例 二、pyecharts1.安装pyecharts包2.查看官方示例 三、开发示例 一、JSON 1.JSON介绍 JSON是一种轻量级的数据交互格式&#xff0c;采用完全独立于编程语言的文本格式来存储和表示数据&#xff08;就是字符串&#xff09;…

【REST2SQL】08 日志重构增加输出到文件log.txt

【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 【REST2SQL】05 GO 操作 达梦 数据库 【REST2SQL】06 GO 跨包接口重构代码 【REST2SQL】07 GO 操作 Mysql 数据库 原来…

微内核、宏内核、混合内核,三者到底有什么区别?

最近几年&#xff0c;随着国内大厂纷纷发布自研操作系统&#xff0c;大家对这些操作系统的出身和相貌吵得不可开交。然而&#xff0c;本文并不打算陷入这种无尽的争论之中。 在计算机技术的发展历程中&#xff0c;所有的技术都是在不断的迭代和发展中形成的&#xff0c;无论是…

软件测试|如何在 Python 中比较两个列表

简介 在Python中&#xff0c;比较两个列表是一个常见的任务&#xff0c;可以帮助你找出两个列表之间的差异、共同元素或其他关系。本文将详细介绍如何在Python中比较两个列表的不同方法&#xff0c;包括使用循环、集合操作和列表推导式等。 方法1&#xff1a;使用循环比较列表…

hadoop自动获取时间

1、自动获取前15分钟 substr(from_unixtime(unix_timestamp(concat(substr(20240107100000,1,4),-,substr(20240107100000,5,2),-,substr(20240107100000,7,2), ,substr(20240107100000,9,2),:,substr(20240107100000,11,2),:,00))-15*60,yyyyMMddHHmmss),1) unix_timestam…

生成式 AI 如何重塑软件开发流程和开发工具?

生成式AI正在重塑开发流程和开发工具&#xff0c;通过自动化和优化软件开发过程&#xff0c;提高开发效率和质量。它可以帮助开发人员快速生成代码、测试和部署应用程序&#xff0c;同时减少错误和缺陷。此外&#xff0c;生成式AI还可以帮助开发人员快速理解和解决复杂的技术问…

MySQL 5.7.35下载安装使用_忘记密码_远程授权

文章目录 MySQL 5.7.35下载安装使用_忘记密码_远程授权MySQL下载地址mysql安装点击安装&#xff0c;最好以管理员身份运行选择自定义安装选择64位勾选启动自定义产品执行点击同意点击下一步点击执行下一步配置数据库端口号设置登录密码&#xff0c;如果密码忘记&#xff0c;下面…

Fontfabric:一款字体与设计的完美结合

一、产品介绍 Fontfabric是一款由国际字体设计公司Fontfabric开发的字体设计软件。它提供了一整套完整的字体设计工具&#xff0c;让用户可以轻松地创建、设计和定制自己的字体。Fontfabric拥有丰富的字体库&#xff0c;包括各种风格和类型&#xff0c;能够满足用户在不同场景…