首页 >后端开发 >Python教程 >如何使用Python的smtplib发送电子邮件附件?

如何使用Python的smtplib发送电子邮件附件?

Barbara Streisand
Barbara Streisand原创
2024-12-17 00:16:25524浏览

How to Send Email Attachments Using Python's smtplib?

使用 Python 的 smtplib 发送附件

使用 Python 的 smtplib 发送电子邮件很容易,但包含附件对于初学者来说似乎有点神秘。这里有一个简单的解释,可以帮助您掌握这项任务。

代码片段:

让我们从一个简单的代码开始snippet:

import smtplib
from os.path import basename
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import COMMASPACE, formatdate

def send_mail(send_from, send_to, subject, text, files=None,
              server="127.0.0.1"):
    assert isinstance(send_to, list)

    msg = MIMEMultipart()
    msg['From'] = send_from
    msg['To'] = COMMASPACE.join(send_to)
    msg['Date'] = formatdate(localtime=True)
    msg['Subject'] = subject

    msg.attach(MIMEText(text))

    for f in files or []:
        with open(f, "rb") as fil:
            part = MIMEApplication(
                fil.read(),
                Name=basename(f)
            )
        # After the file is closed
        part['Content-Disposition'] = 'attachment; filename="%s"' % basename(f)
        msg.attach(part)


    smtp = smtplib.SMTP(server)
    smtp.sendmail(send_from, send_to, msg.as_string())
    smtp.close()

说明:

  1. MIMEMultipart: MIME 消息支持多个 MIME 部分并形成最外层。
  2. MIMEText: 电子邮件的正文创建为包含文本的 MIMEText。
  3. MIMEApplication: 要附加的文件被视为 MIMEApplication,并使用 basename(f) 提取其名称。
  4. Content-Disposition: 此字段配置电子邮件客户端对附件的处理,将其指定为附件name.
  5. SMTP: 设置 SMTP 对象以连接到邮件服务器(默认为“127.0.0.1”)。
  6. sendmail: 电子邮件是使用 sendmail 方法发送的,包含发件人、收件人和消息。

以上是如何使用Python的smtplib发送电子邮件附件?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn