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

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

声明:本站所有文章,如无特殊说明或标注,均为本站(王大神)原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
指数词

如何自动加密和删除文件夹中的文件

2023-10-4 7:17:46

指数词

十种令吉他迷着迷的独特调弦方式

2023-10-4 7:35:19

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索