[英]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.