1
我有以下脚本:脚本在python,下载邮件附件
import imaplib
import email
import os
svdir = 'c:/downloads'
mail = imaplib.IMAP4('https://outlook.office365.com/mapi/emsmdb/?'
'[email protected]')
mail.login("RNa", "RN!")
mail.select("ADP Files")
typ, msgs = mail.search(None, '(SUBJECT "ADP Files")')
msgs = msgs[0].split()
for emailid in msgs:
resp, data = mail.fetch(emailid, "(RFC822)")
email_body = data[0][1]
m = email.message_from_string(email_body)
if m.get_content_maintype() != 'multipart':
continue
for part in m.walk():
if part.get_content_maintype() == 'multipart':
continue
if part.get('Content-Disposition') is None:
continue
filename = part.get_filename()
if filename is not None:
sv_path = os.path.join(svdir, filename)
if not os.path.isfile(sv_path):
print(sv_path)
fp = open(sv_path, 'wb')
fp.write(part.get_payload(decode=True))
fp.close()
中产生的错误是:
C:\Users\rnandipati\Desktop\Batch Files\EMAIL ADP>email.py
Traceback (most recent call last):
File "C:\Python34\lib\encodings\idna.py", line 165, in encode
raise UnicodeError("label empty or too long") UnicodeError: label empty or too long
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\rnandipati\Desktop\Batch Files\EMAIL ADP\email.py", line 2, in <module>
import email
File "C:\Users\rnandipati\Desktop\Batch Files\EMAIL ADP\email.py", line 8, in <module>
mail=imaplib.IMAP4('https://outlook.office365.com/mapi/emsmdb/[email protected]')
File "C:\Python34\lib\imaplib.py", line 181, in __init__
self.open(host, port)
File "C:\Python34\lib\imaplib.py", line 257, in open
self.sock = self._create_socket()
File "C:\Python34\lib\imaplib.py", line 247, in _create_socket
return socket.create_connection((self.host, self.port))
File "C:\Python34\lib\socket.py", line 494, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
File "C:\Python34\lib\socket.py", line 533, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags): UnicodeError: encoding with 'idna' codec failed (UnicodeError: label empty or to o long)
我不知道为什么这个错误产生的。我对这种脚本很陌生。
当我连接使用SSL它显示我AttributeError的:___exit___ .. @Laurent LAPORTE – Rahul
你当然使用Python 2.不要使用**有**声明。 –
我正在使用python 3.4 @Laurent LAPORTE – Rahul