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 = 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

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以为您提供关于Python-Flask框架开发的图书管理系统的详细介绍和源码解析。这个系统是基于Flask框架的,可以帮助用户管理图书信息,包括添加、删除、修改和查询等功能。此外,系统还具有用户登录、注册、退出等功能,以确保数据的安全性和完整性。 系统的主要功能点如下: 1. 用户登录、注册、退出 2. 图书添加、删除、修改、查询 3. 图书分类管理 4. 用户权限管理 下面是系统的简要介绍: 1. 用户登录、注册、退出 用户需要先进行注册,注册成功后可以进行登录操作。登录成功后,用户可以进行图书管理操作。如果用户需要退出,可以点击退出按钮进行退出。 2. 图书添加、删除、修改、查询 用户可以在系统中添加图书信息,包括图书名称、作者、出版社、出版日期、价格等信息。用户还可以删除、修改和查询图书信息。查询支持按照图书名称、作者、出版社等条件进行查询。 3. 图书分类管理 用户可以对图书进行分类管理,包括新建分类、编辑分类和删除分类等操作。图书分类可以根据用户的需求进行自定义。 4. 用户权限管理 系统还具有用户权限管理功能。管理员可以对普通用户进行授权,授权后的用户可以进行添加、删除、修改和查询等操作。 下面是部分系统源码解析: 1. 登录操作 ``` @app.route('/login', methods=['GET', 'POST']) def login(): form = LoginForm() if form.validate_on_submit(): user = User.query.filter_by(username=form.username.data).first() if user is not None and user.verify_password(form.password.data): login_user(user, form.remember_me.data) return redirect(request.args.get('next') or url_for('index')) flash('Invalid username or password.') return render_template('login.html', form=form) ``` 2. 图书添加操作 ``` @app.route('/add_book', methods=['GET', 'POST']) @login_required def add_book(): form = BookForm() if form.validate_on_submit(): book = Book(name=form.name.data, author=form.author.data, publisher=form.publisher.data, publish_date=form.publish_date.data, price=form.price.data) db.session.add(book) db.session.commit() flash('The book has been added.') return redirect(url_for('index')) return render_template('add_book.html', form=form) ``` 以上仅是系统源码的部分解析,系统的其他功能点和源码解析可以参考完整的源码和文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MatpyMaster

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值