0
Это мой первый код на Python, поэтому, пожалуйста, извините меня. Вот что я написал.Как загрузить приложение gmail на основе темы? ОШИБКА: «Нет маршрута к хосту» при подключении к imap.gmail.com
import imaplib
import email
import os
import getpass
email = 'br******@******.com'
password = getpass.getpass('Enter your password: ')
mail = 'imap.gmail.com'
flag = '(RFC822)'
svdir = 'c:/Users/'
m = imaplib.IMAP4(mail)
m.login(email,password)
m.select('inbox')
typ, msgs = m.search(None, 'subject:resume has:attachment')
msgs = msgs[0].split()
for emailid in msgs:
resp, data = m.fetch(emailid, "(RFC822)")
email_body = data[0][1]
mail = email.message_from_string(email_body)
if mail.get_content_maintype() != 'multipart':
continue
for part in mail.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()
Но я получаю это как ошибку.
Traceback (most recent call last):
File "/Users/Documents/Fetch_Attchments.py", line 12, in <module>
m = imaplib.IMAP4(mail)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/imaplib.py", line 197, in __init__
self.open(host, port)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/imaplib.py", line 294, in open
self.sock = self._create_socket()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/imaplib.py", line 284, in _create_socket
return socket.create_connection((self.host, self.port))
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py", line 711, in create_connection
raise err
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py", line 702, in create_connection
sock.connect(sa)
OSError: [Errno 65] No route to host
Я фильтрую сообщения по теме и получаю вложение, сохраненное в определенном месте. Пожалуйста, обратите внимание, что условие объекта будет фильтровать только одно сообщение.
Исправьте отступ в четыре пробела, что сделает код более удобным для чтения, и это официальный способ отступа кода Python. – linusg
@linusg В любом случае вы можете игнорировать большую часть кода; он не работает в строке 12. – melpomene