Поэтому я пытался создать код для печати входящих сообщений Gmail на веб-сайт. Я хочу продолжить разработку, чтобы содержать только определенные данные из электронной почты и записывать их в базу данных. Однако мне не кажется, что с кодом что-то не так, но localhost: 8080 (порт, который я использую) не загружается вообще. В браузере есть значок загрузки при попытке доступа к странице, но он не загружается даже через часы. Командная строка не отвечает никакими ошибками. У меня также есть настройки imap GMAIL правильно, и я также пробовал его с электронной почтой Outlook. Вот код:
import webapp2
import smtplib
import time
import imaplib
import email
class ReadMail(webapp2.RequestHandler):
def get(self):
mail = imaplib.IMAP4('[email protected]',993)
mail.login('[email protected]','password')
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("From:" + email_from)
self.response.write("Subject:" + email_subject)
routes = [('/', ReadMail),]
app = webapp2.WSGIApplication(routes, debug=True)
App.yml правильно настроен. Этот код работает с чем-то очень простым, например, только с print "this"
. Надеюсь, кто-то может помочь с моей проблемой, спасибо заранее!
Поэтому через некоторое время я начал работать, создав свой собственный файл приложения WSGI вместо использования webapp2. Есть еще некоторые проблемы, такие как неправильное форматирование сообщения, но теперь это мой код:
from pyramid.config import Configurator
from pyramid.response import Response
import email, getpass, imaplib, os, re
import sys
detach_dir = "C:\OTHERS\CS\PYTHONPROJECTS"
def imaptest(request):
m = imaplib.IMAP4_SSL("imap.gmail.com")
m.login("[email protected]", "testiprotokolla221")
m.select("INBOX")
resp, items = m.search(None, '(FROM "[email protected]")')
items = items [0].split()
my_msg = []
msg_cnt = 0
break_ = False
for emailid in items[::1]:
resp, data = m.fetch(emailid, "(RFC822)")
if ( break_ ):
break
for response_part in data:
if isinstance(response_part, tuple):
msg = email.message_from_string(response_part[1])
varSubject = msg['subject']
varDate = msg['date']
if varSubject[0] == '$':
r, d = m.fetch(emailid, "(UID BODY[TEXT])")
ymd = email.utils.parsedate(varDate)[0:3]
my_msg.append([ email.message_from_string(d[0][1]), ymd])
msg_cnt += 1
# Print as HTML
return Response(
'Content-Type': 'text/html'
"Your latest Email:" + str(msg)
)
config = Configurator()
config.add_route('imaptest', '/imaptest')
config.add_view(imaptest, route_name='imaptest')
app = config.make_wsgi_app()