Это мой код в настоящее время, я использую Google Cloud SDK и Python 2.7:
import webapp2
import smtplib
import time
import imaplib
import email
class ReadMail(webapp2.RequestHandler):
def get(self):
mail = imaplib.IMAP4_SSL(imap.gmail.com)
mail.login('[email protected]','xxx')
mail.select('inbox')
type, data = mail.search(None, 'ALL')
mail_ids = data[0]
id_list = mail_ids.split()
first_email_id = int(id_list[0])
latest_email_id = int(id_list[-1])
for i in range(latest_email_id,first_email_id, -1):
typ, data = mail.fetch(i, '(RFC822)' )
for response_part in data:
if isinstance(response_part, tuple):
msg = email.message_from_string(response_part[1])
email_subject = msg['subject']
email_from = msg['from']
self.response.headers['Content-Type'] = 'text/plain'
self.response.write('Hello World?')
self.response.write('From :') + email_from + '\n'
self.response.write('Subject :') + email_subject + '\n'
app = webapp2.WSGIApplication([
('/', ReadMail),
], debug=True)
Однако я получаю эту ошибку, и веб-страница не загружается (ошибка HTML 500):
ERROR 2018-06-14 07:30:02,217 wsgi.py:279]
Traceback (most recent call last):
File "C:\Users\XXX\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\runtime\wsgi.py", line 267, in Handle
result = handler(dict(self._environ), self._StartResponse)
TypeError: 'module' object is not callable
INFO 2018-06-14 10:30:02,878 module.py:846] default: "GET / HTTP/1.1" 500 -
INFO 2018-06-14 10:30:08,711 module.py:414] [default] Detected file changes:
hello.pyc
Я вижу, что проблема связана с вызовом модулей, но поскольку я новичок в python, мне трудно понять, как это работает. Любая помощь будет оценена по достоинству!
РЕДАКТИРОВАТЬ
Если я удалю 'Request.Handler' из class ReadMail(webapp2.RequestHandler), я получаю вместо этого следующую ошибку:
File "C:\Users\xxx\desktop\pythontest\demo\hello.py", line 8, in <module>
class ReadMail(webapp2):
TypeError: Error when calling the metaclass bases
module.__init__() takes at most 2 arguments (3 given)
INFO 2018-06-14 11:00:42,963 module.py:846] default: "GET / HTTP/1.1" 500 -
@Siegmeyer Нет, это не так
Разве «self.response.write ('From:') + email_from + '\ n'» не должно быть «self.response.write ('From:' + email_from + '\ n')»?
@Siegmeyer Хорошо, что вы заметили. Это определенно должно быть. Я постараюсь исправить это и посмотрю, работает ли это
Наверное, это тоже что-то другое.
@Siegmeyer Ага, по-прежнему возникает та же ошибка






Линия
mail = imaplib.IMAP4_SSL(imap.gmail.com)
должно быть
mail = imaplib.IMAP4_SSL('imap.gmail.com')
Да, я заметил это до вашего комментария и исправил. Ошибка вызываемого модуля все еще не устранена.
Работает ли локально?