如何使用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日

相关推荐

  • BiliBiliTool:你的智能任务管家,轻松实现B站生活全自动化!

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

    2023年8月27日
    00
  • 机器人在仓储物流中的崭露头角:未来裁员的担忧

    在一个晴朗的早晨,杰克走进了他工作了十年的亚马逊物流仓库。他一直是这个仓库的骄傲,凭借着勤奋和聪明才智,他成为了仓库的一名资深员工。然而,今天的情况似乎有些不同。 10月18日,亚马逊宣布引入了两款新的机…

    2023年10月20日
    00
  • 如何使用ChatGPT自动化AWS任务:与S3存储桶互动的示例

    本教程将向您展示如何使用ChatGPT函数来执行与Amazon S3存储桶相关的任务的示例。这篇教程涵盖了S3存储桶的关键功能,包括运行简单的列出命令、在所有存储桶中搜索特定文件、将文件上传到存储桶以及从存储桶下载文…

    2023年10月14日
    00
  • 成功的把机器人加到wordpress中

    在这个数字化时代,机器人技术已经成为了许多网站和企业的必备工具之一。无论是为了提供更好的客户支持,还是为了自动化重复性任务,将机器人加入WordPress网站已经成为了一个热门的趋势。本文将向您介绍如何成功将…

    2023年2月16日
    00
  • Deforum Stable Diffusion WebUI — 官方扩展教程

    在数字创作的浪潮中,一款强大的工具崭露头角,它能够让您创造出令人惊叹的视觉效果,而这正是Deforum Stable Diffusion WebUI。如果您曾幻想过创作出生动、令人印象深刻的动画,那么这个教程将为您展示如何充分利…

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

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

    2023年8月25日
    00
  • 如何在电脑开机时检测U盘插入状态并自动执行操作

    在日常生活中,我们经常使用U盘来传输文件、备份数据或者运行一些特定的应用程序。但有时候,我们希望在电脑开机时能够自动检测U盘的插入状态,并根据不同的情况执行不同的操作。本教程将向你展示如何使用Python编…

    2023年9月25日
    00
  • 如何生成数据库表结构文档

    在软件开发和数据库管理中,了解数据库表结构对于项目的设计和维护至关重要。为了方便团队成员之间的沟通和协作,以及记录数据库的详细信息,我们需要生成数据库表结构文档。本教程将介绍如何使用Python和Markdown…

    2023年11月25日
    00
  • 如何使用Python自动化抢购京东商品并邮件通知

    在互联网时代,网购已经成为我们生活的一部分。然而,有些热门商品往往在瞬间售罄,让人们很难买到心仪的商品。不过,幸运的是,Python编程语言可以帮助我们自动化抢购京东商品,并通过邮件通知我们是否成功。在这…

    2023年10月24日
    00
  • 用 Docker 部署的容器处理文件时自动识别新增文件并处理的方法

    在使用 Docker 部署的应用中,经常会遇到需要处理特定目录下文件的情况。然而,当目录里的文件增加时,Docker 容器并不会自动识别这些新增文件,需要手动重启容器才能让处理逻辑生效。这种情况下,我们可以通过一些…

    2024年3月17日
    00

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注