2016-06-10 2 views
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 

Я фильтрую сообщения по теме и получаю вложение, сохраненное в определенном месте. Пожалуйста, обратите внимание, что условие объекта будет фильтровать только одно сообщение.

+0

Исправьте отступ в четыре пробела, что сделает код более удобным для чтения, и это официальный способ отступа кода Python. – linusg

+1

@linusg В любом случае вы можете игнорировать большую часть кода; он не работает в строке 12. – melpomene

ответ

0

Gmail не позволяет подключаться к текстовому порту. Требуется SSL/TLS.

Вам потребуется:

m = imaplib.IMAP4_SSL("imap.gmail.com", 993) 
Смежные вопросы