首页 > 解决方案 > 使用 python 下载电子邮件附件时出错

问题描述

我得到的错误说:

  • IOError:[Errno 2] 没有这样的文件或目录:'Users/nithinpathak/Documents/Automate/attachments/Payment Advice Note from 06/28/2018.PDF'。我了解该错误是因为 python 无法检测到该文件。但不确定代码的哪一部分是错误的

我使用以下代码下载附件

import imaplib, email, os

map_url = 'imap.gmail.com'
attachment_dir='Users/nithinpathak/Documents/Automate'
con = imaplib.IMAP4_SSL(imap_url)
con.login(user, password)
con.select('INBOX')

result, data = con.fetch(b'11', '(RFC822)')
raw = email.message_from_string(data[0][1])
get_attachments(raw)

def get_attachments(msg):
  for part in msg.walk():
    if part.get_content_maintype()=='multipart':
        continue
    if part.get('Content-Disposition') is None:
        continue
    fileName = part.get_filename()

    if bool(fileName):
        filePath = os.path.join(attachment_dir, 'attachments', fileName)
        if not os.path.isfile(filePath):
            print fileName
            fp = open(filePath, 'wb')
            fp.wirte(part.get_payload(decode=True))
            fp.close()

标签: pythonimap

解决方案


在 Python 中,即使在使用反斜杠作为目录分隔符的 Windows 中,路径名中的斜杠总是被解释为目录分隔符。因此,文件名Payment Advice Note from 06/28/2018.PDF被解释为 .pdf 的子目录下的文件 2018.PDF Payment Advice Note from 06/28。您应该简单地将其重命名为不带斜杠的名称。


推荐阅读