Python 2.7 smtplib 如何发送带有错误 13 权限的附件被拒绝?

Posted

技术标签:

【中文标题】Python 2.7 smtplib 如何发送带有错误 13 权限的附件被拒绝?【英文标题】:Python 2.7 smtplib how to send attachment with Error 13 permission denied? 【发布时间】:2017-02-04 08:04:35 【问题描述】:

希望你一切都好。我在 Windows 7 上使用 python 2.7 和 PyCharm 并且是新的。 我正在尝试发送带有附件的电子邮件,但收到错误: IOError: [Errno 13] Permission denied: 'C:\Users\Myname\Desktop' 这是我的代码:

import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.MIMEBase import MIMEBase
from email import encoders

fromaddr = "mail@gmail.com"
toaddr = "mail@gmail.com"

msg = MIMEMultipart()

msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = "Something bla bla bla"

body = "Something bla bla bla"

msg.attach(MIMEText(body, 'plain'))

filename = "CV.txt"
attachment = open("C:\Users\MyName\Desktop","rb")

part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= %s" % filename)

msg.attach(part)

server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(fromaddr, "PASSWORD")
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)
server.quit()

我阅读了其他文章,最常见的问题似乎是没有足够的权限,但我是管理员。无论如何,如果是这种情况,我需要一步一步地做些什么才能让它继续下去?还是有其他与许可无关的问题? 提前致谢。 最诚挚的问候

【问题讨论】:

不相关,但在硬编码路径时使用原始字符串 (r"c:\User\whatever") 或正斜杠。 【参考方案1】:

您正在尝试将 目录 作为文件打开,您需要传递要打开的实际文件:

attachment =  open(r"C:\Users\MyName\Desktop\the_file")

【讨论】:

不用担心,在 linux 上你会得到IOError: [Errno 21] Is a directory:,这会提供更多信息 干杯伙伴!仍然在熟悉的 windows 中使用 python,很快希望转移到 linkux!再次感谢

以上是关于Python 2.7 smtplib 如何发送带有错误 13 权限的附件被拒绝?的主要内容,如果未能解决你的问题,请参考以下文章

python 2.7 利用smtplib发送抄送邮件以及发送html表格

smtplib 在 Python 3.1 中发送带有 unicode 字符的邮件的问题

如何使用 python smtplib 向多个收件人发送电子邮件?

无法使用 gmail 通过 python 发送电子邮件 - smtplib.SMTPException:服务器不支持 SMTP AUTH 扩展

Python 2.7测试是否发送了SMTP邮件

Python smtplib 损坏 html 电子邮件