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 扩展