【问题标题】:Python send email with an attachmentPython 发送带有附件的电子邮件
【发布时间】:2014-11-09 02:22:19
【问题描述】:

我正在测试 Python,学习如何使用它。

最近我一直在测试使用 SMTP 发送电子邮件的不同方法,无论是否带有附件。

到目前为止,在阅读了 Stackoverflow 上的 Python 文档和其他主题之后,我得到了我需要的东西,现在可以发送带附件的电子邮件了,耶!

我偶然发现了这个页面,http://www.tutorialspoint.com/python/python_sending_email.htm,它为我提供了它的外观,另一种附加文件的方式。

我之前在一个脚本中使用过这个,我有 4 个文件要附加(希望我正确插入代码):

   for f in attach:
    part = MIMEBase('application', 'octet-stream')
    part.set_payload(open(f, 'rb').read())
    Encoders.encode_base64(part)
    part.add_header('Content-Disposition','attachment; filename="%s"' % os.path.basename(f))
    msg.attach(part)

但是上面发布的教程使用了不同的方式,我尝试了它,因为为什么不呢,只需复制粘贴并输入我的电子邮件,SMTP 只是为了查看它的运行情况,然后尝试更改。但是,最后一段代码:

message = part1 + part2 + part3

.. 不起作用。我的 SMTP 拒绝说 [ERNO10053]。只发送一份就可以了。

是否有更熟悉 Python 的人向我解释一下使用边界的含义?我可以看到它是“--”,后跟一个唯一标记。但我真的不明白你为什么需要它们,以及这个脚本到底发生了什么。

我是新手。

干杯!

【问题讨论】:

  • 所以看看你的 smtp 的服务器错误 #10053 是什么。
  • 这是个好主意,会做的。
  • 认为您正在寻找有关MIME 的文档(并且应该这样标记问题)。
  • 看起来像服务器端阻塞。它可能是由邮件服务器防病毒引起的。或者服务器拒绝了某种类型的文件。尝试使用不同类型的文件(.doc、.jpg 等)。
  • 我尝试更改为不同的文件。如果我只发送包含“编码内容”的第 3 部分,它适用于任何文件。但是当我匹配教程中提到的三个部分时,我得到了那个错误。而且我真的不明白“边界,标记”的东西。

标签: python email python-2.7 mime


【解决方案1】:

此边界是MIME specification 的一部分。它们用作附件之间的分隔符。

错误10053 表示连接中止。

【讨论】:

  • 感谢您的链接!
猜你喜欢
  • 2017-02-04
  • 2019-11-21
  • 2015-09-09
  • 2020-09-16
  • 1970-01-01
相关资源
最近更新 更多