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如何删除没有列名的列浅析

    删除没有列名的列需要先了解一下pandas中的一些基本操作。 1. 查看数据集 使用 pandas.read_csv() 函数读入数据集,并使用 .head() 方法查看前几行数据,确认数据集内容。 import pandas as pd df = pd.read_csv(‘data.csv’) df.head() 2. 查看列名 使用 df.columns…

    python 2023年6月13日
    00
  • 如何选择一个DataFrame的子集

    选择DataFrame的子集需要考虑到数据的类型,数据中的关键信息,和选择规则等多个因素。下面是一些基本的选择子集的方法。 选择某一列 可以通过在中括号中输入列名来获取DataFrame中的指定列,也可以使用属性方式获取。 import pandas as pd data = pd.read_csv("data.csv") # 使用中括号…

    python-answer 2023年3月27日
    00
  • pandas 对series和dataframe进行排序的实例

    下面是关于“pandas对series和dataframe进行排序的实例”的完整攻略: 1. Series排序实例 1.1 构建Series对象 首先我们需要构建一个Series对象,假设我们有一个学生成绩的列表,其中包括语文、数学和英语三个科目的成绩,我们可以使用pandas的Series对象来保存这些数据: import pandas as pd sco…

    python 2023年5月14日
    00
  • 在Python中使用Pandas将CSV转换为Excel

    在Python中,使用Pandas可以方便、快捷地将CSV文件转换为Excel文件。下面是详细的步骤: 1.安装Pandas 使用pip安装Pandas,运行以下命令: pip install pandas 2.导入模块 在Python脚本中导入Pandas模块,使用以下命令: import pandas as pd 3.读取CSV文件 使用Pandas的r…

    python-answer 2023年3月27日
    00
  • pandas的resample重采样的使用

    下面是针对”pandas的resample重采样的使用”的完整攻略: 什么是重采样 在时间序列分析中,经常需要将时间间隔调整为不同的频率,因为这也意味着相应的汇总数据的改变。 例如,我们有 1 分钟的数据,但需要 5 分钟的数据。 这就是所谓的重采样,通过这个过程,可以使用新的频率来对数据进行聚合。 resample函数的使用 resample函数是一种数据…

    python 2023年5月14日
    00
  • 如何在Python中对CSV进行多列排序

    可以使用Python的内置库csv和operator来对CSV进行多列排序。 首先,我们需要读取CSV文件并将其转换为list对象: import csv with open(‘data.csv’, ‘r’) as file: reader = csv.reader(file) data = list(reader) 接下来,我们可以使用sorted()函数…

    python-answer 2023年3月27日
    00
  • python机器学习使数据更鲜活的可视化工具Pandas_Alive

    介绍 Pandas_Alive 是一个可以将 Pandas 数据帧 (dataframe) 即数据可视化为动画的工具。它为数据科学家提供了一个可视化的工具来探索和呈现数据。Pandas_Alive 使用 Matplotlib 音乐人才晋升来创建动画,并提供了更具可读性和易于使用的 Python 代码。 安装 Pandas_Alive 不是 Python 标准…

    python 2023年5月14日
    00
  • 浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)

    接下来我将详细讲解一下 pandas 中 DataFrame 的查询方法,包括 []、loc、iloc、at、iat、ix 这几种方法。 DataFrame 查询方法 DataFrame 的基本查询方法——[] DataFrame 的基本查询方法是使用中括号 [] 进行索引,这种方法是最为简单的方法。 示例 1: import pandas as pd da…

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