当前位置:首页 > 未命名 > 正文内容

Python SMTP邮件发送的10个核心代码示例

大大1年前 (2025-08-23)未命名537
烽火邮箱企业邮箱蜂邮EDM邮件营销系统

【蜂邮EDM】:邮件群发系统,EDM邮件营销平台,邮件代发服务。 查看价格
【AokSend邮件API】:触发式邮件API,15元/万封,99%送达率。 查看价格
【烽火邮箱】:新人领取免费域名邮箱,可用作企业邮箱公司邮箱。 查看价格

Python SMTP邮件发送的10个核心代码示例

在现代系统中,邮件发送是一个非常重要且常见的任务。无论是企业内部沟通,还是个人项目,邮件都是信息传递的重要方式。而在Python中,通过python-multipart和smtplib库,可以轻松实现邮件发送功能。本文将介绍10个核心代码示例,帮助您快速掌握Python邮件发送的技巧。

引言

邮件发送作为常见的任务,在现代系统中无处不在。无论是企业内部沟通,还是个人项目,邮件都是信息传递的重要方式。而在Python中,通过python-multipart和smtplib库,可以轻松实现邮件发送功能。本文将介绍10个核心代码示例,帮助您快速掌握Python邮件发送的技巧。

邮件发送基础配置

在开始编写代码之前,我们需要先配置好环境。以下是一个基本的邮件发送配置示例:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

# 邮件配置
server = 'smtp.example.com'  # 邮局地址
port = 587              # 邮局端口
username = 'your_username'  # 发件人邮箱用户名
password = 'your_password'  # 发件人邮箱密码
use_tls = True           # 使用TLS加密

#  recipients列表
recipients = ['接收者1@example.com', '接收者2@example.com']

# 邮件主题
subject = '邮件主题'

发送单封邮件

# 创建MIMEMultipart对象
msg = MIMEMultipart()
msg.set_header('Subject', subject)
msg.set_header('To', ', '.join(recipients))
msg.set_header('From', username)

# 添加正文内容
text = "这是一封自动生成的邮件,主题是%s,内容如下:" % subject
body = MIMEText(text, 'plain')  # 设置编码为纯文本

# 添加正文到邮件
msg.attach(body)

# 连接邮局
server = smtplib.SMTP()
if use_tls:
    server.connect(server, port=port)
else:
    server.connect(server)

# 发送邮件
server.sendmail(username, recipients, msg.as_string())

# 关闭连接
server.quit()

批量发送邮件

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

# 邮件配置
server = 'smtp.example.com'
port = 587
username = 'your_username'
password = 'your_password'
use_tls = True

# 批量发送邮件的接收者列表
recipients_list = [
    '接收者1@example.com',
    '接收者2@example.com',
    '接收者3@example.com'
]

# 邮件主题
subject = '邮件主题'

# 发送时间
send_time = '2023-10-01 10:00:00'

# 正文内容
text = "这是一封自动生成的邮件,主题是%s,内容如下:" % subject
body = MIMEText(text, 'plain')

# 创建MIMEMultipart对象
msg = MIMEMultipart()
msg['Subject'] = subject
msg['To'] = ', '.join(recipients_list)
msg['From'] = username
msg.set_header('Date', send_time)
msg.attach(body)

# 连接邮局
server = smtplib.SMTP()
if use_tls:
    server.connect(server, port=port)
else:
    server.connect()

# 发送邮件
server.sendmail(username, recipients_list, msg.as_string())

# 关闭连接
server.quit()

邮件发送的邮件列表管理

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import time

# 邮件发送的接收者列表
recipients = [
    '接收者1@example.com',
    '接收者2@example.com',
    '接收者3@example.com'
]

# 邮件主题
subject = '邮件主题'

# 发送时间间隔
send_interval = 10  # 单位:分钟

# 发送时间
current_time = time.strftime('%Y-%m-%d %H:%M:%S')
send_time = current_time + ' 10:00:00'

# 正文内容
text = "这是一封自动生成的邮件,主题是%s,内容如下:" % subject
body = MIMEText(text, 'plain')

# 创建MIMEMultipart对象
msg = MIMEMultipart()
msg['Subject'] = subject
msg['To'] = ', '.join(recipients)
msg['From'] = 'your_username@example.com'
msg.set_header('Date', send_time)
msg.attach(body)

# 连接邮局
server = smtplib.SMTP()
server.connect('smtp.example.com', 587)
server.starttls()  # 使用TLS
server.login('your_username@example.com', 'your_password')  # 登录

# 发送邮件
server.sendmail('your_username@example.com', recipients, msg.as_string())

# 等待下一个发送时间
time.sleep(send_interval)

# 关闭连接
server.quit()

附件添加到邮件

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email附件添加到邮件 MIMEMultipart import MIMEBase

# 邮件发送的接收者列表
recipients = ['接收者1@example.com', '接收者2@example.com']

# 邮件主题
subject = '邮件主题'

# 正文内容
text = "这是一封自动生成的邮件,主题是%s,内容如下:" % subject
body = MIMEText(text, 'plain')

# 附件信息
attachment_path = 'C:/document/附件1.pdf'
attachment_name = '附件1.pdf'
attachment_type = 'application/pdf'

# 创建MIMEMultipart对象
msg = MIMEMultipart()
msg['Subject'] = subject
msg['To'] = ', '.join(recipients)
msg['From'] = 'your_username@example.com'
msg.set_header('Date', time.strftime('%Y-%m-%d %H:%M:%S'))

# 添加正文到邮件
msg.attach(body)

# 添加附件
with open(attachment_path, 'rb') as f:
    attachment = MIMEBase('application/octet-stream', name=attachment_name, type=attachment_type)
    attachment.set_header('Content-Disposition', f'inline; filename="{attachment_name}"')
    attachment.set_header('Content-Type', attachment_type)
    attachment.set_header('Content-Disposition', f'attachment; filename="{attachment_name}"')
    msg.attach(attachment)

# 连接邮局
server = smtplib.SMTP()
server.connect('smtp.example.com', 587)
server.starttls()
server.login('your_username@example.com', 'your_password')

# 发送邮件
server.sendmail('your_username@example.com', recipients, msg.as_string())

# 关闭连接
server.quit()

邮件发送的邮件日志记录

import smtplib
import logging

# 邮件发送日志记录的配置
logging.basicConfig(filename='smtp_email.log', level=logging.INFO)

# 邮件发送的接收者列表
recipients = ['接收者1@example.com', '接收者2@example.com']

# 邮件主题
subject = '邮件主题'

# 发送时间
send_time = time.strftime('%Y-%m-%d %H:%M:%S')

# 正文内容
text = "这是一封自动生成的邮件,主题是%s,内容如下:" % subject
body = MIMEText(text, 'plain')

# 创建MIMEMultipart对象
msg = MIMEMultipart()
msg['Subject'] = subject
msg['To'] = ', '.join(recipients)
msg['From'] = 'your_username@example.com'
msg.set_header('Date', send_time)
msg.attach(body)

# 设置日志记录
logger = logging.getLogger(__name__)
logger.info(msg)

# 连接邮局
server = smtplib.SMTP()
server.connect('smtp.example.com', 587)
server.starttls()
server.login('your_username@example.com', 'your_password')

# 发送邮件
server.sendmail('your_username@example.com', recipients, msg.as_string())

# 关闭连接
server.quit()

邮件发送的错误处理

import smtplib
import logging

# 邮件发送日志记录的配置
logging.basicConfig(filename='smtp_email.log', level=logging.INFO)

try:
    # 邮件发送的接收者列表
    recipients = ['接收者1@example.com', '接收者2@example.com']

    # 邮件主题
    subject = '邮件主题'

    # 发送时间
    send_time = time.strftime('%Y-%m-%d %H:%M:%S')

    # 正文内容
    text = "这是一封自动生成的邮件,主题是%s,内容如下:" % subject
    body = MIMEText(text, 'plain')

    # 创建MIMEMultipart对象
    msg = MIMEMultipart()
    msg['Subject'] = subject
    msg['To'] = ', '.join(recipients)
    msg['From'] = 'your_username@example.com'
    msg.set_header('Date', send_time)
    msg.attach(body)

    # 连接邮局
    server = smtplib.SMTP()
    server.connect('smtp.example.com', 587)
    server.starttls()
    server.login('your_username@example.com', 'your_password')

    # 发送邮件
    server.sendmail('your_username@example.com', recipients, msg.as_string())

    logger.info(msg)

except smtplib.SMTPException as e:
    logger.error(f"邮件发送失败:{e}")
    print(f"邮件发送失败:{e}")

except Exception as e:
    logger.error(f"邮件发送过程中出现异常:{e}")
    print(f"邮件发送过程中出现异常:{e}")

finally:
    server.quit()

邮件发送的性能优化

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

# 邮件发送的接收者列表
recipients = ['接收者1@example.com', '接收者2@example.com', '接收者3@example.com']

# 邮件主题
subject = '邮件主题'

# 发送时间
current_time = time.strftime('%Y-%m-%d %H:%M:%S')
send_time = current_time + ' 10:00:00'

# 正文内容
text = "这是一封自动生成的邮件,主题是%s,内容如下:" % subject
body = MIMEText(text, 'plain')

# 创建MIMEMultipart对象
msg = MIMEMultipart()
msg['Subject'] = subject
msg['To'] = ', '.join(recipients)
msg['From'] = 'your_username@example.com'
msg.set_header('Date', send_time)
msg.attach(body)

# 连接邮局
server = smtplib.SMTP()
server.connect('smtp.example.com', 587)
server.starttls()
server.login('your_username@example.com', 'your_password')

# 发送邮件
server.sendmail('your_username@example.com', recipients, msg.as_string())

# 关闭连接
server.quit()

邮件发送的统计分析

import smtplib
import pandas as pd

# 邮件发送的接收者列表
recipients = ['接收者1@example.com', '接收者2@example.com', '接收者3@example.com']

# 邮件主题
subject = '邮件主题'

# 发送时间
send_time = time.strftime('%Y-%m-%d %H:%M:%S')

# 正文内容
text = "这是一封自动生成的邮件,主题是%s,内容如下:" % subject
body = MIMEText(text, 'plain')

# 创建MIMEMultipart对象
msg = MIMEMultipart()
msg['Subject'] = subject
msg['To'] = ', '.join(recipients)
msg['From'] = 'your_username@example.com'
msg.set_header('Date', send_time)
msg.attach(body)

# 连接邮局
server = smtplib.SMTP()
server.connect('smtp.example.com', 587)
server.starttls()
server.login('your_username@example.com', 'your_password')

# 发送邮件
server.sendmail('your_username@example.com', recipients, msg.as_string())

# 关闭连接
server.quit()

# 收集邮件发送数据
email_data = {
    '发送时间': [send_time],
    '接收者': recipients,
    '主题': [subject],
    '正文': [text]
}

# 将数据转换为DataFrame
df = pd.DataFrame(email_data)

# 保存到CSV文件
df.to_csv('email_stats.csv', index=False)

邮件发送的测试


import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

# 邮件发送的接收者列表
recipients = ['接收者1@example.com', '接收者2@example.com']

# 邮件主题
subject = '邮件主题'

# 发送时间
send_time = time.strftime('%Y-%m-%d %H:%M:%S')

# 正文内容
text = "这是一封自动生成的邮件,主题是%s,内容如下:" % subject
body = MIMEText(text, 'plain')

# 创建MIMEMultipart对象
msg = MIMEMultipart()
msg['Subject'] = subject
msg['To'] = ', '.join(recipients)
msg['From'] = 'your_username@example.com'
msg.set_header('Date

Python SMTP邮件发送的10个核心代码示例

4.2/5 - (9 votes)


蜂邮EDM邮件营销系统烽火邮箱企业邮箱

【蜂邮EDM】:邮件群发系统,EDM邮件营销平台,邮件代发服务。 查看价格
【AokSend邮件API】:触发式邮件API,15元/万封,99%送达率。 查看价格
【烽火邮箱】:新人领取免费域名邮箱,可用作企业邮箱公司邮箱。 查看价格

🔔🔔🔔

【烽火邮箱】:烽火邮箱是一款简洁高效的企业邮箱平台,新客户赠送免费企业邮箱,一个起卖、按月付费(低至9.9元);支持别名邮箱及群组邮箱,支持定制无限邮箱。高权重纯净IP池,系统自带反垃圾机制。
立即查看 >> :企业邮箱价格


【蜂邮EDM】:邮件群发系统,EDM邮件营销平台,邮件代发服务,专业研发定制邮件营销系统及邮件群发解决方案!蜂邮自研产品线主要分为标准版、外贸版、企业版、定制版,及邮件API邮件SMTP接口服务。
立即查看 >> :邮件发送价格


【AokSend邮件API】:专注触发式邮件API发送服务。15元/万封,发送验证码邮件、忘记密码邮件、通知告警邮件等,不限速。综合送达率99%、进箱率98%。触发邮件也叫事务性邮件或推送邮件,包含:验证码邮件、重置密码邮件、余额提醒邮件、会员到期邮件、账号认证邮件等!
立即查看 >> :邮件发送价格

🔔🔔🔔

扫描二维码推送至手机访问。

版权声明:本文由MailBing邮件营销博客发布,如需转载请注明出处。

本文链接:https://edm.mailbing.com/id6002.html

分享给朋友: