python smtplib发送多个email联系人的实现

当我们需要在Python中发送电子邮件时,通常可以使用smtplib模块来完成。在实际应用中,我们有时候需要向多个联系人发送邮件。下面是一些实现smtp发送多个email联系人的方式:

一、使用字符串连接

最简单也是最常见的方式是将所有的收件人地址用逗号分隔成一个字符串,然后添加到邮件报头的To字段中。示例如下:

import smtplib
from email.mime.text import MIMEText
from email.header import Header

mail_host = 'smtp.example.com'   # smtp服务地址
mail_user = 'my_name'           # 邮箱账号
mail_pass = 'my_password'       # 邮箱密码
sender = 'my_sender@example.com'    # 发件人邮箱 
receivers = ['first@example.com', 'second@example.com']   # 收件人邮箱,列表格式

message = MIMEText('这是一封测试邮件', 'plain', 'utf-8')
message['From'] = Header("发件人姓名", 'utf-8')      # 发件人姓名
message['To'] = Header(",".join(receivers), 'utf-8')   # 多个收件人地址用逗号连接
message['Subject'] = Header('Python SMTP测试邮件', 'utf-8')

try:
    smtpObj = smtplib.SMTP()
    smtpObj.connect(mail_host, 25)    # 连接smtp服务器,默认端口为25
    smtpObj.login(mail_user, mail_pass)  # 登录邮箱账号
    smtpObj.sendmail(sender, receivers, message.as_string())    # 发送邮件
    print("邮件发送成功")
except smtplib.SMTPException as e:
    print("Error: 无法发送邮件")

需要注意的是,多个邮件地址用“,”分隔,如果有多个联系人,建议使用列表统一存储,方便进行添加和删除。

二、使用MIMEMultipart

除了上述方法以外,MIME模块中的MIMEMultipart类也提供了一种方便的方式,可以添加多个收件人。示例如下:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.header import Header

mail_host = 'smtp.example.com'   # smtp服务地址
mail_user = 'my_name'           # 邮箱账号
mail_pass = 'my_password'       # 邮箱密码
sender = 'my_sender@example.com'    # 发件人邮箱 
receivers = ['first@example.com', 'second@example.com']   # 收件人邮箱,列表格式

msg = MIMEMultipart()   # 创建一个MIMEMultipart对象
msg['From'] = Header("发件人姓名", 'utf-8')      # 发件人姓名
msg['Subject'] = Header('Python SMTP测试邮件', 'utf-8')

# 添加文本内容
message = MIMEText('这是一封测试邮件', 'plain', 'utf-8')
msg.attach(message)

# 添加附件
with open('report.pdf', 'rb') as f:
    attach = MIMEApplication(f.read(), _subtype='pdf')
    attach.add_header('Content-Disposition', 'attachment', filename='report.pdf')
    msg.attach(attach)

# 添加多个收件人
for receiver in receivers:
    msg['To'] = Header(receiver, 'utf-8')
    try:
        smtpObj = smtplib.SMTP()
        smtpObj.connect(mail_host, 25)    # 连接smtp服务器,默认端口为25
        smtpObj.login(mail_user, mail_pass)  # 登录邮箱账号
        smtpObj.sendmail(sender, receiver, msg.as_string())    # 发送邮件
        print("邮件发送成功")
    except smtplib.SMTPException as e:
        print("Error: 无法发送邮件")

在该示例中,我们首先创建了一个MIMEMultipart对象,然后在其中添加了邮件正文和附件,并且在for循环中,为每个收件人单独创建一个邮件,设置了目标收件人的地址并发送邮件。

需要注意的是,由于目标收件人是不同的,因此在每个邮件中设置To字段时,需要将Header中的内容针对每个收件人单独设置。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python smtplib发送多个email联系人的实现 - Python技术站

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

相关文章

  • python BeautifulSoup使用方法详解

    Python BeautifulSoup使用方法详解 Python的BeautifulSoup4(BS4)库是一个用于解析HTML和XML文档的Python库。它可以帮助开发者从网页中提取数据,并进行数据清洗和处理。以下是Python BS4库的安装与使用解: 安装BS4库 可以使用pip命令安装BS4库。以下是安装BS4库的基本语法: pip instal…

    python 2023年5月14日
    00
  • Flask框架使用异常捕获问题

    当使用Flask框架编写Web应用程序时,可能会遇到一些异常情况,如请求的URL不存在、数据库连接失败等。为了更好地处理这些异常情况,Flask框架提供了一种异常捕获机制。 如何捕获Flask框架中的异常? 在Flask框架中,异常捕获是通过装饰器实现的,可以使用@app.errorhandler装饰器来将错误处理函数注册到应用程序中。例如: @app.er…

    python 2023年5月13日
    00
  • python 把数据 json格式输出的实例代码

    以下是详细的攻略。 1. 什么是JSON? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它以易于让人阅读的文本格式为基础,用于数据的交换和存储,常用于Web应用程序间的数据传输。 JSON是一种文本格式,可以通过 Python 的 json 模块进行解析和序列化。 2. JSON 和 Python 的数据类型对…

    python 2023年6月3日
    00
  • Python 如何实现文件自动去重

    关于Python如何实现文件自动去重,下面是一个完整的攻略: 1. 文件读取 首先,我们需要读取文件的内容,并将其保存到一个数据结构中,方便后续的操作。可以使用Python内置的文件操作函数open()以及文件读取方法read()来实现。 file_path = "/path/to/your/file" with open(file_pa…

    python 2023年5月19日
    00
  • python编程项目中线上问题排查与解决

    标题:Python编程项目中线上问题排查与解决 引言 在进行Python编程项目中,难免会遇到类似于线上问题排查与解决的操作。对于这些问题,要及时地诊断并解决,才能确保项目的正常进行。在本篇文章中,将详细讲解一些关键的工具和操作步骤,帮助程序员解决线上问题。 步骤 1. 利用日志工具进行问题定位 通过写入详细的日志,可以帮助我们在发生错误时及时定位问题。在P…

    python 2023年5月13日
    00
  • python beautiful soup库入门安装教程

    Python BeautifulSoup库入门安装教程 BeautifulSoup是Python中一个非常流行的HTML和XML解析库,可以帮助我们更方便地解析网页。本文将介绍如何安装BeautifulSoup,并提供两个示例。 安装BeautifulSoup 在使用BeautifulSoup之前,需要安装它。以下是一个示例代码,演示如何使用pip安装Bea…

    python 2023年5月15日
    00
  • Python3.9新特性详解

    Python3.9新特性详解 Python 3.9是Python语言的最新版本,该版本包含了许多有用的新特性和改进。本篇文章将详细讲解Python 3.9的新特性。 操作符模块 Python 3.9引入了一个名为”operator”的内置模块,该模块提供了一组函数,用于对Python中的操作符进行操作。这些函数包括: operator.add(a, b):返…

    python 2023年5月13日
    00
  • Python入门篇之字典

    关于Python字典的入门篇攻略,我来给你详细的讲解。 什么是字典? Python中的字典(Dictionary)是一种无序的、可变的数据类型,它由键(key)和值(value)组成,键和值之间用冒号 “:” 分隔,多个键值对用逗号分隔,整个字典用一对大括号 “{}” 括起来。 例如,下面这个字典记录了几种水果的名称及其价格: fruits = {‘appl…

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