欢迎来到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仿真......希望能帮到你!