簡體   English   中英

嘗試制作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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM