python给指定csv表格中的联系人群发邮件(带附件的邮件)

要通过Python给指定CSV表格中的联系人群发带附件的邮件,需要分为以下几个步骤:

  1. 从CSV文件中读取收件人邮箱和附件路径等信息。
  2. 登录SMTP服务器发送邮件。
  3. 将收件人信息、邮件内容和附件添加到邮件中。
  4. 发送邮件。

具体步骤和代码实现如下:

  1. 读取CSV文件中的收件人邮箱和附件路径

可以使用Python内置模块csv来读取CSV文件:

import csv

with open('recipients.csv', newline='') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        to_email = row['email']
        attachment_path = row['attachment_path']

这里使用了csv.DictReader来读取CSV文件,并把每一行转化为一个字典。可以通过字典键来获取每个字段的值。

  1. 登录SMTP服务器发送邮件

在Python中,可以使用smtplib模块来实现SMTP客户端。使用SMTP客户端发送邮件的主要步骤如下:

  • 连接SMTP服务器。
  • 登录SMTP服务器。
  • 发送邮件。
  • 关闭SMTP连接。

示例代码:

import smtplib

# 连接SMTP服务器
smtp_server = 'smtp.example.com'
port = 587
smtp_obj = smtplib.SMTP(smtp_server, port)
smtp_obj.ehlo()
smtp_obj.starttls()

# 登录SMTP服务器
username = 'xxx@example.com'
password = 'xxx'
smtp_obj.login(username, password)

SMTP服务器的地址、端口号以及登录凭据需要根据实际情况进行配置。

  1. 将收件人信息、邮件内容和附件添加到邮件中

使用Python内置库email构建邮件,分别添加收件人、邮件正文、附件。

示例代码:

import os
from email import encoders
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

# 创建邮件对象
msg = MIMEMultipart()

# 添加收件人
to_email = 'user@example.com'
msg['To'] = to_email

# 添加邮件正文
body = '邮件正文'
msg.attach(MIMEText(body, 'plain'))

# 添加附件
attachment_path = 'example.pdf'
filename = os.path.basename(attachment_path)
with open(attachment_path, 'rb') as f:
    attachment = MIMEBase('application', 'octet-stream')
    attachment.set_payload(f.read())
    encoders.encode_base64(attachment)
    attachment.add_header('Content-Disposition', f'attachment; filename="{filename}"')
    msg.attach(attachment)
  1. 发送邮件

调用SMTP对象的sendmail方法发送邮件。

示例代码:

# 发送邮件
smtp_obj.sendmail(username, to_email, msg.as_string())

# 关闭SMTP连接
smtp_obj.quit()

完整代码实例:

import csv
import smtplib
import os
from email import encoders
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

# 读取CSV文件中的收件人邮箱和附件路径
with open('recipients.csv', newline='') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        to_email = row['email']
        attachment_path = row['attachment_path']

        # 连接SMTP服务器
        smtp_server = 'smtp.example.com'
        port = 587
        smtp_obj = smtplib.SMTP(smtp_server, port)
        smtp_obj.ehlo()
        smtp_obj.starttls()

        # 登录SMTP服务器
        username = 'xxx@example.com'
        password = 'xxx'
        smtp_obj.login(username, password)

        # 创建邮件对象
        msg = MIMEMultipart()

        # 添加收件人
        msg['To'] = to_email

        # 添加邮件正文
        body = '邮件正文'
        msg.attach(MIMEText(body, 'plain'))

        # 添加附件
        filename = os.path.basename(attachment_path)
        with open(attachment_path, 'rb') as f:
            attachment = MIMEBase('application', 'octet-stream')
            attachment.set_payload(f.read())
            encoders.encode_base64(attachment)
            attachment.add_header('Content-Disposition', f'attachment; filename="{filename}"')
            msg.attach(attachment)

        # 发送邮件
        smtp_obj.sendmail(username, to_email, msg.as_string())

        # 关闭SMTP连接
        smtp_obj.quit()

另外可以参考下面的代码库:

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python给指定csv表格中的联系人群发邮件(带附件的邮件) - Python技术站

(0)
上一篇 2023年6月13日
下一篇 2023年6月13日

相关文章

  • Pandas 读写html

    Pandas 是一个常用的 Python 数据处理工具库,它具有很好的数据处理能力,同时还提供了方便的输入输出(I/O)函数,用于读写各种格式的数据。其中,读写 HTML 文件是一项非常常见的操作。接下来,本文将详细讲解如何使用 Pandas 读写 HTML 的完整攻略。 1. Pandas 读取 HTML 文件 Pandas 可以使用 read_html …

    python-answer 2023年3月27日
    00
  • 如何在Pandas数据框架中获得列名

    获得 Pandas 数据框架的列名是非常简单的,只需要调用数据框架的 columns 属性即可。下面是一个具体的例子: import pandas as pd # 创建数据框架 df = pd.DataFrame({‘A’: [1, 2, 3], ‘B’: [4, 5, 6]}) # 获取列名 cols = df.columns # 打印列名 print(c…

    python-answer 2023年3月27日
    00
  • 获取DataFrame列中最小值的索引

    获取 DataFrame 列中最小值的索引需要使用 Pandas 库中的方法,下面将详细讲解这个过程。 步骤一:创建 DataFrame 首先,我们需要创建一个 DataFrame 对象。在这个示例中,我们使用以下代码创建一个包含三个列和三个行的 DataFrame: import pandas as pd df = pd.DataFrame({‘A’: […

    python-answer 2023年3月27日
    00
  • Python与Pandas和XlsxWriter组合工作 – 3

    第三部分:使用XlsxWriter创建Excel工作簿并写入数据 现在我们已经掌握了如何使用Pandas读取和操作Excel文件中的数据,接下来我们将学习将数据写入Excel文件中的步骤。为此,我们将使用XlsxWriter模块来创建和写入Excel工作簿。 安装XlsxWriter模块 在开始之前,我们需要先安装XlsxWriter模块。可以使用以下命令安…

    python-answer 2023年3月27日
    00
  • Pandas中的DataFrame.to_excel()方法

    当我们需要将pandas中的DataFrame数据存储在Excel表格中时,我们可以使用DataFrame中的to_excel()方法。这个方法可以将一个或多个DataFrame对象的数据写入一个或多个Excel工作表(sheet)中。 1. to_excel()方法基本语法: DataFrame.to_excel(excel_writer, sheet_n…

    python-answer 2023年3月27日
    00
  • 在Pandas中从时间戳中获取小时数

    在Pandas中,可以使用.dt属性从时间戳中获取小时数。就像下面这样: import pandas as pd # 创建一个时间戳Series ts = pd.Series(pd.date_range(‘2022-01-01′, periods=4, freq=’4H’)) # 获取小时数 hour = ts.dt.hour print(hour) 这个代…

    python-answer 2023年3月27日
    00
  • 在Pandas Lambda函数中使用Apply,有多个if语句

    使用Pandas Lambda函数中的apply方法时,可以在Lambda函数中使用多个if语句实现更加复杂的条件筛选和处理。下面介绍Lambda函数中使用apply方法的完整攻略,并给出具体的实例说明。 准备数据 首先,需要准备Pandas DataFrame类型的数据。以一个图书信息表为例,数据如下所示: import pandas as pd df =…

    python-answer 2023年3月27日
    00
  • python 根据csv表头、列号读取数据的实现

    下面是关于”python 根据csv表头、列号读取数据的实现”的完整攻略。 1. 读取csv文件 Python中可用csv库来读取csv文件,例如: import csv with open(‘data.csv’) as csv_file: csv_reader = csv.reader(csv_file) for row in csv_reader: pr…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部