Python 邮件发送实战:自动发送邮件,代码详解与应用

代码分析与解释

代码是一个 Python 脚本,用于通过 SMTP 协议发送带有附件的邮件。该脚本定义了一个名为 send_email 的函数,该函数接受接收者的电子邮件地址以及可选的两个文件路径作为附件。以下是该脚本的主要步骤和组件:

  1. 导入必要的库和模块,如 smtplibemail 模块的多个类。
  2. 定义 send_email 函数,该函数接受接收者的电子邮件地址和两个可选的文件路径作为参数。
  3. send_email 函数中,配置发送者的电子邮件地址和密码,设置邮件的主题和内容。
  4. 创建一个 MIMEMultipart 对象以构建邮件,并设置邮件的 FromToSubject 头。
  5. 将邮件的正文添加到 MIMEMultipart 对象中。
  6. 如果提供了文件路径,则将文件作为附件添加到邮件中。
  7. 通过 SMTP 服务器登录并发送邮件。
  8. 在脚本的末尾,调用 send_email 函数以发送邮件。

Python 邮件发送实战:自动发送邮件,代码详解与应用-封面.jpg

代码块

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
from email.header import Header

def send_email(receiver, file_path1=None, file_path2=None):
    # 邮件发送方的信息
    sender = 'sanrenjz@163.com'
    password = 'AU46546412MN'

    # 邮件主题和内容
    subject = 'Python自动发送邮件'
    content = '这是一封Python自动发送的邮件'

    # 创建邮件对象
    message = MIMEMultipart()
    message['From'] = Header(sender, 'utf-8')
    message['To'] = Header(receiver, 'utf-8')
    message['Subject'] = Header(subject, 'utf-8')

    # 添加邮件正文
    message.attach(MIMEText(content, 'plain', 'utf-8'))

    # 添加附件1
    if file_path1 is not None:
        with open(file_path1, 'rb') as f:
            attachment = MIMEBase('application', 'octet-stream')
            attachment.set_payload(f.read())
            encoders.encode_base64(attachment)
            attachment.add_header('Content-Disposition', 'attachment', filename=('utf-8', '', file_path1.split('\\')[-1]))
            message.attach(attachment)

    # 添加附件2
    if file_path2 is not None:
        with open(file_path2, 'rb') as f:
            attachment = MIMEBase('application', 'octet-stream')
            attachment.set_payload(f.read())
            encoders.encode_base64(attachment)
            attachment.add_header('Content-Disposition', 'attachment', filename=('utf-8', '', file_path2.split('\\')[-1]))
            message.attach(attachment)

    # 发送邮件
    try:
        smtp_obj = smtplib.SMTP('smtp.163.com', 25)
        smtp_obj.login(sender, password)
        smtp_obj.sendmail(sender, receiver, message.as_string())
        print('邮件发送成功')
    except smtplib.SMTPException as e:
        print('邮件发送失败:', e)

# 调用函数发送邮件
send_email('yuhan454dd@yeah.net', '全新策略.xlsx', "美股.xlsx")

标题建议

  1. 使用 Python 自动发送附件邮件
  2. Python 邮件发送脚本:一键发送附件
  3. 如何通过 Python 脚本发送附件邮件
  4. 自动化你的邮件任务:Python 邮件发送脚本解析
  5. Python 邮件发送实战:代码详解与应用

标签建议

  • Python
  • 邮件发送
  • SMTP
  • 自动化
  • 代码实现
  • 文件附件
  • 电子邮件
THE END