如何使用Python自动发送批量邮件

在现代社交网络和电子通信的时代,电子邮件仍然是一种重要的沟通工具。无论是向客户发送营销邮件,还是向团队成员发送通知,自动化发送批量邮件是提高效率的关键。在本教程中,我们将学习如何使用Python编写一个自动发送批量邮件的脚本。

背景故事

假设你是一名市场营销专家,你需要向数百位潜在客户发送个性化的邮件,以推广你的产品或服务。手动一个一个发送邮件将是一项繁琐且耗时的任务。但是,有了Python的帮助,你可以轻松地自动化这个过程,将你的邮件发送到每个收件人。

准备工作

在我们开始之前,让我们先进行一些准备工作:

  1. SMTP邮箱设置:你需要一个支持SMTP(Simple Mail Transfer Protocol)的邮箱,例如Gmail或QQ邮箱。确保开启SMTP服务,并获取SMTP服务器地址和端口号以及你的发件人邮箱和密码。

  2. CSV收件人列表:将你要发送邮件的收件人列表保存为CSV文件,每行一个邮箱地址。这个列表可以包含数百个收件人。

使用Python编写自动发送邮件脚本

我们将使用Python编写一个脚本,它将完成以下任务:

  1. 连接SMTP服务器:与SMTP服务器建立连接,使用TLS协议进行安全连接。

  2. 登录邮箱:使用你的发件人邮箱和密码登录SMTP服务器。

  3. 构造邮件内容:创建一封包含主题、正文、图片和附件的邮件。

  4. 发送邮件:将邮件发送给收件人。

以下是Python代码的主要部分:

import smtplib
import csv
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage

def send_email(sender_email, sender_password, receiver_email):
    # 与SMTP服务器建立连接
    smtp_server = 'smtp.qq.com'
    server_port = 587
    server = smtplib.SMTP(smtp_server, server_port)
    server.starttls()

    try:
        # 登录邮箱账号
        server.login(sender_email, sender_password)

        # 构造邮件内容
        msg_root = MIMEMultipart('related')
        msg_root['Subject'] = '测试一下'
        msg_root['From'] = sender_email
        msg_root['To'] = receiver_email

        subject = '测试一下111111'
        message = '''
        <html>
          <body>
            <p><img src="cid:image1" alt="升学教育图片" style="width:300px;height:200px;"></p>
            <p>班上新来一位学生,名字叫“马騳骉”。</p>
            <p>开学点名了,班主任不知怎么念,就说 : 马叉叉到了没?</p>
            <p>语文老师有点文学素养,点名道:万马奔腾到了没?</p>
          </body>
        </html>
        '''

        # 添加文本内容
        html_part = MIMEText(message, 'html')
        msg_root.attach(html_part)

        # 添加图片附件
        with open('path/to/your/image.jpg', 'rb') as image_file:
            image_part = MIMEImage(image_file.read())
            image_part.add_header('Content-Disposition', 'attachment; filename=image.jpg')
            image_part.add_header('Content-ID', '<image1>')
            msg_root.attach(image_part)

        # 添加附件
        with open('path/to/your/attachment.pdf', 'rb') as file:
            attachment_part = MIMEApplication(file.read(), Name='attachment.pdf')
            attachment_part.add_header('Content-Disposition', 'attachment; filename=attachment.pdf')
            msg_root.attach(attachment_part)

        # 发送邮件
        server.sendmail(sender_email, receiver_email, msg_root.as_string())
        print(f"邮件发送成功: {receiver_email}")
    except smtplib.SMTPException as e:
        print(f"邮件发送失败: {receiver_email},错误信息: {str(e)}")

    # 关闭连接
    server.quit()

# 创建收件人邮箱列表
receiver_emails = []

# 读取CSV文件并获取收件人邮箱列表
with open('path/to/your/email.csv', 'r') as file:
    reader = csv.reader(file)
    for row in reader:
        receiver_emails.append(row[0])

# 循环发送邮件给收件人列表中的每个邮箱
for receiver_email in receiver_emails:
    send_email(sender_email, sender_password, receiver_email)

批量发送邮件

要批量发送邮件,我们将创建一个函数 send_emails,它将循环遍历收件人列表,并在每个邮箱上启动一个线程以异步发送邮件。这可以大大提高邮件发送速度。

以下是如何批量发送邮件的代码:

import threading

def send_emails(sender_email, sender_password, thread_count):
    # 创建线程列表
    threads = []

    # 创建发送邮件的函数
    def send_email_thread(receiver_email):
        send_email(sender_email, sender_password, receiver_email)

    # 创建并启动发送邮件的线程
    for receiver_email in receiver_emails:
        t = threading.Thread(target=send_email_thread, args=(receiver_email,))
        threads.append(t)
        t.start()

        # 控制最大线程数
        if len(threads) >= thread_count:
            for thread in threads:
                thread.join()
            threads = []

    # 等待剩余线程完成
    for thread in threads:
        thread.join()

# 调用批量发送邮件函数
send_emails(sender_email, sender_password, thread_count)

结论

通过使用Python编写自动发送批量邮件的脚本,我们可以轻松地将邮件发送给大量收件人,提高工作效率。无论是市场营销还是通知,这个自动化方法都可以帮助你节省时间和精力。

希望这篇教程对你有所帮助!如果你有任何问题或需要进一步的指导,请随时联系我们。

本文由作者 王大神 原创发布于 大神网的AI博客。

转载请注明作者:王大神

原文出处:如何使用Python自动发送批量邮件

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2023年10月4日
下一篇 2023年10月4日

相关推荐

  • 用AutoHotkey简化充值操作:让电脑来帮你充电

    在我们的生活中,有许多重复性的任务需要完成,其中之一可能是充值水电卡。通常,这需要人工干预,但是有没有一种方法可以让电脑来自动完成这项任务呢?本文将向您介绍如何使用AutoHotkey(AHK)来模拟鼠标和键盘事…

    2023年10月6日
    00
  • BiliBiliTool:你的智能任务管家,轻松实现B站生活全自动化!

    在B站的丰富世界里,有无数的精彩内容等待着你去发现和体验。然而,在繁忙的生活中,你是否常常因为忙碌而错过了重要的B站任务、福利和直播节目?别担心,现在有一个绝佳的解决方案,让你的B站生活更加畅快无忧!那…

    2023年8月27日
    00
  • 8个能提升你办公效率的人工智能网站

    在现代工作环境中,提高办公效率是至关重要的。随着人工智能技术的不断发展,越来越多的AI工具涌现出来,可以帮助你更加高效地完成工作任务。本文将介绍8个能够极大提升你办公效率的人工智能网站,无论你是需要自动…

    2023年5月4日
    00
  • 玩转 Docker:使用 Terraform 管理容器化应用

    Docker 是一种流行的容器化技术,而 Terraform 则是一种用于自动化管理基础设施的工具。结合使用 Docker 和 Terraform 可以帮助您更加轻松地管理和部署容器化应用。本文将向您介绍如何使用 Terraform 管理 Docker …

    2024年3月17日
    00
  • 自动签到天翼云盘,告别繁琐的手动操作

    你是否也因为拥有电信手机的福利,而获得了10T的天翼云盘空间,但又不想每天都登录签到?别担心,我为你提供了一个自动签到脚本的解决方案,让你告别烦人的手动操作。 感谢热心观众:felix发现的错误。 为了方便大…

    2023年11月5日
    019
  • 如何使用Selenium自动化浏览器操作获取网页数据

    在当今互联网时代,网页上的数据是我们获取信息和进行各种任务的关键。有时候,我们需要自动化地进行浏览器操作,以获取网页上的数据,而这正是Selenium库的用武之地。在这篇教程中,我们将学习如何使用Selenium来…

    2023年10月16日
    00
  • 探索 Shell 脚本的威力

    在当今快节奏的计算环境中,我们常常陷入对图形界面和应用程序的过度依赖中,而忽视了那个简洁而又强大的工具:Shell。作为计算机操作系统与用户之间的桥梁,Shell 脚本在日常工作中发挥着不可或缺的作用。让我们回…

    2023年8月25日
    00
  • Qexo:在线Hexo编辑器,解锁博客创作的全新体验

    在数字时代,博客成为了分享知识、表达观点和展示创作才华的重要平台。然而,对于许多博主来说,创建和管理博客可能会变得复杂和繁琐。但现在,有了Qexo,一切都变得轻松、快捷、强大、美观。 Qexo的独特之处 Qexo…

    2023年11月4日
    00
  • Microsoft Teams将整合Workflows:自动执行重复性任务,提高员工生产力

    在数字化时代,自动化和提高工作效率已经成为企业的重要目标。微软Teams最新的举措正是为了实现这一目标,将自动化工作流程引入团队协作工具中。让我们一起探讨一下这一激动人心的发展。 打破常规,微软Teams迈向自…

    2023年10月26日
    00
  • WeiboBot:基于微博H5 API的机器人框架

    一天,王大神正在研究如何自动化他的社交媒体活动,特别是在微博上。他发现了一款神奇的工具 – WeiboBot,这是一个基于微博H5 API开发的机器人框架,能够让他的机器人更加智能地参与微博互动。今天,我们将深入了解…

    2023年10月10日
    00