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

yizhihongxing

当我们需要在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实现树的深度优先遍历与广度优先遍历详解

    下面是详细讲解“Python实现树的深度优先遍历与广度优先遍历详解”的完整攻略。 1. 什么是树 树是一种非线性数据结构,它由若干个节点组成,每个节点可以有若干个子节点。树节点之间存在一种层次关系,其中上面的节点称根节点,最下面的节点称为叶子节点。 2. 树的遍历 树的遍历是指按照一定的顺序访问树的所有节点。常见的树的遍历方式有深度优先历和广度优先遍历。 2…

    python 2023年5月14日
    00
  • python中xml格式的转换方法

    在Python中,可以使用标准库中的xml.etree.ElementTree模块来解析和生成XML格式的数据。本文将详细讲解如何使用Python中的xml.etree.ElementTree模块来解析和生成XML格式的数据。 步骤1:解析XML数据 要解析XML数据,需要使用xml.etree.ElementTree模块中的ElementTree类。以下是…

    python 2023年5月15日
    00
  • 10公共操作与推导式

    公共操作与推导式 公共操作 操作方法 功能 描述 操作类型 + 合并 将两个相同类型序列进行连接 字符串、列表、元组 * 复制 将里面的数据进行复制 字符串、列表、元组 len 获取序列长度 查看序列长度 字符串、列表、元组、字典,集合 reversed 倒置 将容器里面的数据倒置 字符串、列表、元组、字典 max, min 最大最小值 求容器数据的最大最小…

    python 2023年4月17日
    00
  • python 合并多个excel中同名的sheet

    合并多个Excel文件中同名的Sheet可以通过Python的pandas库来实现。具体步骤如下: 安装pandas库 在终端中输入以下命令安装pandas库: pip install pandas 导入pandas库 在Python代码文件中导入pandas库: import pandas as pd 读取Excel文件 使用pandas库的read_ex…

    python 2023年6月5日
    00
  • Python命令行解析工具argparse模块

    下面是针对Python命令行解析工具argparse模块的完整攻略。 什么是argparse模块 argparse是Python标准库中用于命令行解析的模块,它可以帮助我们定义和解析命令行参数,并提供了丰富的功能和选项。 argparse模块的基本用法 引入argparse模块 python import argparse 创建ArgumentParser对…

    python 2023年6月3日
    00
  • Python3.6 + TensorFlow 安装配置图文教程(Windows 64 bit)

    Python3.6+TensorFlow安装配置图文教程(Windows64bit) 1. 为什么要使用Python和TensorFlow Python是一种流行的开源编程语言,用于处理数据、编写web应用、机器学习、人工智能等各个领域。Python语言简洁易读,有完善的的扩展包支持,是数据科学家和研究人员的首选语言。 而TensorFlow是谷歌广泛使用的…

    python 2023年5月14日
    00
  • 用python绘制极坐标雷达图

    下面是用Python绘制极坐标雷达图的攻略: 1. 参考库 Python绘制极坐标雷达图需要使用到matplotlib库,需要在代码开头导入该库: import matplotlib.pyplot as plt 2. 绘制极坐标图 首先,我们需要新建一个matplotlib绘图环境: fig = plt.figure(figsize=(6,6)) ax = …

    python 2023年5月19日
    00
  • python OpenCV GrabCut使用实例解析

    我很乐意为您提供 OpenCV GrabCut 的使用实例解析攻略,内容如下。 目录 GrabCut 简介 GrabCut 使用实例 人物图像背景去除 物体图像背景去除 GrabCut 简介 GrabCut 是 OpenCV 的一种图像分割算法,可以自动地、交互地分割前景和背景。在图像分割的过程中,传统的全自动方法在复杂背景的图像中的精度较低。交互方法需要用…

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