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

news2025/1/13 15:43:28

欢迎来到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 = root
        self.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 = False



    def 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 = True
            self.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 = False

if __name__ == "__main__":
    root = tk.Tk()
    app = App(root)
    root.mainloop()

四、exe工具获取

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

最后:

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

5a8015ddde1e41418a38e958eb12ecbd.png

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

创建mysql普通用户

一、创建mysql普通用户的原因: 权限控制:MySQL的权限系统允许您为每个用户分配特定的权限。通过创建普通用户,您可以根据需要为每个用户分配特定的数据库和表权限,而不是将所有权限授予一个全局管理员用户。这有助于提高数据库的…

2024年华夏银行总行社会招聘公告

信息科技部自动化测试与开发类岗  工作地点:北京市 学历要求:本科及以上 工作职责 1、持续推进自动化测试的开展,提升自动化测试覆盖率,包括方案设计、测试分析、测试执行和总结等。 2、负责自动化测试工具和框架搭建,根据…

关于报错 curl: (56) Recv failure: Connection reset by peer

curl ip没问题 curl localhost 则报错 curl: (56) Recv failure: Connection reset by peer 出现这个报错有很多原因, 其中之一就是terminal代理 而关闭代理应用之后, 其实由于配置的终端都是 export指定的代理 所以导致还是一直报错. 通过 curl -v 可以发现 指向了代理ip和…

关于网络安全,你了解多少?

随着互联网技术的飞速发展,网络安全问题日益凸显。国际标准化组织(ISO)对计算机网络安全做出了明确定义:为保护数据处理系统而采取的技术和管理的安全措施,旨在保护计算机硬件、软件和数据免受偶然和故意原因造成的破坏…

Apipost IDEA插件,真的超好用

IDEA是一款功能强大的集成开发环境(IDE),它可以帮助开发人员更加高效地编写、调试和部署软件应用程序。我们在编写完接口代码后需要进行接口调试等操作,一般需要打开额外的调试工具。 今天给大家介绍一款IDEA插件:Api…

明年评职称,现在就要准备论文了吗?

明年评职称不仅需要提前补好继续教育课时,同样的还需要准备好论文和业绩材料,初级职称的相对来说对论文和业绩要求不高,但是中高级职称业绩和论文的质量代表着你的评审通过率,那为什么需要提前准备好呢?甘建二再给大家…

相机成像之图像传感器与ISP【四】

文章目录 1、图像传感器基础1.1 基础原理——光电效应1.2 基础的图像传感器设计1.3 衡量传感器效率的一个关键指标:光量子效率(QE)1.4 感光单元的响应1.5 像素的满阱容量1.6 像素尺寸和填充比例1.7 微透镜的作用1.8 光学低通滤波器简介1.9 传…

web开发学习笔记(1.html css)

css负责布局 js负责动作 2.磁盘路径 3.水平线标签 4.引入css 5.无语义标签 6.选择器 7.播放视频和音频 8.换行 <br> 9.段落标签 <p></p> 10.首行缩进 11.边距 12.盒子模型&#xff0c;居中显示&#xff0c; margin后面的四个值顺序为上右下左&#…

原生微信小程序-两次设置支付密码校验,密码设置二次确认

效果 具体代码 1、wxml <view style"{{themeColor}}"><view classcontainer><view class"password_content"><view wx:if{{type 1}}><view class"title"><view class"main_title">设置支付密码…

[Vulnhub靶机] DriftingBlues: 6

[Vulnhub靶机] DriftingBlues: 6靶机渗透思路及方法&#xff08;个人分享&#xff09; 靶机下载地址&#xff1a; https://download.vulnhub.com/driftingblues/driftingblues6_vh.ova 靶机地址&#xff1a;192.168.67.25 攻击机地址&#xff1a;192.168.67.3 一、信息收集 …

使用脚本把springboot程序部署到k8s上

一般我们部署写4个文件就行了 首先分别写 Dockerfile1package.sh2build.shdocker_push.sh Dockerfile # 基于jdk1.8 FROM openjdk:8-jdk-alpine RUN echo "Asia/Shanghai" > /etc/timezone RUN mkdir /app WORKDIR /appCOPY ./monitor-flink-1.0.jar /appEXPO…

Java 数据结构篇-实现 AVL 树的核心方法

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 AVL 树的说明 2.0 AVL 树的成员变量及其构造方法 3.0 实现 AVL 树的核心方法 3.1 获取当前节点的高度 height(AVLNode node) 3.2 更新当前节点的高度 updateHeig…

[力扣 Hot100]Day2 字母异位词分组

题目描述 给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 出处 思路 这题有点考阅读理解&#xff0c;意思就是把输入数组中的所含字母相同但顺序不同的单词放到同…

YOLOv8-Seg改进:轻量化改进 | 超越RepVGG!浙大阿里提出OREPA:在线卷积重参数化

🚀🚀🚀本文改进:OREPA在线卷积重参数化巧妙的和YOLOV8结合,并实现轻量化 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1)手把手教你如何训练YOLOv8-seg; 2)模型创新,提升分割性能; 3)独家…

创建型模式 | 建造者模式

一、建造者模式 1、原理 建造者模式又叫生成器模式&#xff0c;是一种对象的构建模式。它可以将复杂对象的建造过程抽象出来&#xff0c;使这个抽象过程的不同实现方法可以构造出不同表现&#xff08;属性&#xff09;的对象。创建者模式是一步一步创建一个复杂的对象&#xf…

使用SpringCache操作Redis缓存数据

SpringCache概念 SpringCache是一个框架&#xff0c;实现了基于注解的缓存功能&#xff0c;只需要简单的加一个注解&#xff0c;就能实现缓存功能。 SpringCache提供了一层抽象&#xff0c;底层可以切换不同的缓存实现&#xff0c;例如&#xff1a; EHCacheCaffeineRedis 使…

vue倒计时60秒改变按钮状态效果demo(整理)

你可以使用Vue的计时器和绑定状态的方法来实现这个功能。 首先&#xff0c;在data中添加一个计时器countdown&#xff0c;初始值为0。 data() {return {countdown: 0} }<template><div><button click"startCountdown" :disabled"countdown > …

Android14之解决Pixel手机联网出现感叹号(一百八十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

【数据结构】7大排序最详细

0.前言 接下来进入排序&#xff0c;我们知道在c语言阶段可能就学习过了像冒泡排序&#xff0c;选择排序这种比较简单的排序&#xff0c;那么接下来我们就会学习到更加高级的排序算法。但高级代表着难度的提升&#xff0c;但不用担心&#xff0c;博主会细细来谈&#xff0c;慢慢…

九州金榜如何高质量培养孩子成长

在这个时代&#xff0c;孩子们就像温室里的花朵&#xff0c;被父母和家人宠爱着&#xff0c;享受着最优越的物质条件。 然而&#xff0c;在这样的环境中成长起来的孩子&#xff0c;却往往被很多父母称为"白眼狼"&#xff0c;对孩子的自私行为感到痛苦和失落。 1 随…