尝试制作 Python 代码以将电子邮件打印到使用 IMAP 的网站上,本地主机没有响应

Trying to make a Python code to print E-mail onto a website with IMAP, localhost doesn't respond

所以我一直在尝试编写代码以将我的 Gmail 收件箱打印到网站上。我想进一步开发它以仅包含电子邮件中的某些数据并将其写入数据库。但是,在我看来代码没有任何问题,但是 localhost:8080 (我正在使用的端口)根本没有加载。尝试访问页面时,浏览器显示加载图标,但即使在数小时后也不会加载。命令行不响应任何错误。我也有正确的 GMAIL imap 设置,我也尝试过使用 Outlooks 电子邮件。这是代码:

import webapp2
import smtplib
import time
import imaplib
import email


class ReadMail(webapp2.RequestHandler):

def get(self):
    mail = imaplib.IMAP4('xxx@gmail.com',993)

    mail.login('email@gmail.com','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("testi.protokolla@gmail.com", "testiprotokolla221")

    m.select("INBOX")

    resp, items = m.search(None, '(FROM "vallu.toivonen96@gmail.com")')
    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()