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

相关推荐

  • 如何使用Selenium自动化浏览器操作获取网页数据

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

    2023年10月16日
    00
  • 记录一次中药数据库的捣鼓

    在信息化、大数据的今天,手工操作逐渐显得笨拙和低效。今天,我要分享一个用Python自动获取和整理中药数据库的实践过程,以示如何通过编程实现工作自动化。 找寻数据源:机遇与挑战并存 解决任何问题的第一步总是…

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

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

    2023年11月5日
    019
  • 如何通过Python自动启动小米电视上的指定APP

    大家好,今天我要和你分享一个有趣的技巧,可以帮助你自动启动小米电视上的指定APP。你是否曾经遇到过小米电视更新后,导致已安装的APP被分类,难以找到的问题?如果是的话,这篇教程将为你提供一种解决方案。 背景…

    2023年9月19日
    00
  • 用AutoHotkey简化充值操作:让电脑来帮你充电

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

    2023年10月6日
    00
  • 如何自动加密和删除文件夹中的文件

    你是否曾经担心过将重要文件存储在电脑上,担心它们可能被他人访问或丢失?在本教程中,我们将介绍如何使用Python编写一个自动化脚本,将文件夹中的文件压缩、加密,并安全地删除原始文件,以保护你的数据。让我们…

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

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

    2023年10月24日
    00
  • 从Visio导出图像:使用PowerShell自动化批量操作

    有时候,在工作或项目中,你可能需要将Visio图表导出为图像文件以便与他人共享或在其他文档中使用。手动逐一导出每个图表可能会很繁琐,但是通过使用PowerShell,你可以轻松自动化这个过程。在这篇文章中,我将向你…

    2023年9月27日
    00
  • 王小神:不只是个WeChat机器人

    嘿,我刚弄了个WeChat机器人,就叫它“王小神”吧。现在市面上的机器人,多数还是Web协议的。那些说是Web协议的,一连就是Windows登录提示,搞得人头大。iOS或平板登录的,更是贵得吓人,一年得掏出2000多。 怎么来的…

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

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

    2023年10月10日
    00