Cách tốt nhất để làm điều này sẽ tạo ra một dịch vụ cửa sổ trong python mà nhận email bằng imaplib2
Dưới đây là một kịch bản mẫu python để làm same.You thể cài đặt tập lệnh này để chạy dưới dạng dịch vụ cửa sổ bằng cách chạy lệnh sau trên dòng lệnh "python THENAMEOFYOURSCRIPTFILE.py install".
import win32service
import win32event
import servicemanager
import socket
import imaplib2, time
from threading import *
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
import datetime
import email
class Idler(object):
def __init__(self, conn):
self.thread = Thread(target=self.idle)
self.M = conn
self.event = Event()
def start(self):
self.thread.start()
def stop(self):
self.event.set()
def join(self):
self.thread.join()
def idle(self):
while True:
if self.event.isSet():
return
self.needsync = False
def callback(args):
if not self.event.isSet():
self.needsync = True
self.event.set()
self.M.idle(callback=callback)
self.event.wait()
if self.needsync:
self.event.clear()
self.dosync()
def dosync(self):
#DO SOMETHING HERE WHEN YOU RECEIVE YOUR EMAIL
class AppServerSvc (win32serviceutil.ServiceFramework):
_svc_name_ = "receiveemail"
_svc_display_name_ = "receiveemail"
def __init__(self,args):
win32serviceutil.ServiceFramework.__init__(self,args)
self.hWaitStop = win32event.CreateEvent(None,0,0,None)
socket.setdefaulttimeout(60)
def SvcStop(self):
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
win32event.SetEvent(self.hWaitStop)
def SvcDoRun(self):
servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
servicemanager.PYS_SERVICE_STARTED,
(self._svc_name_,''))
self.main()
def main(self):
M = imaplib2.IMAP4_SSL("imap.gmail.com", 993)
M.login("YourID", "password")
M.select("INBOX")
idler = Idler(M)
idler.start()
while True:
time.sleep(1*60)
idler.stop()
idler.join()
M.close()
M.logout()
if __name__ == '__main__':
win32serviceutil.HandleCommandLine(AppServerSvc)
Đó bao gồm các phần việc gửi, nếu bạn có thể thêm một đoạn nhanh chóng để nghe cho thư mới bằng cách sử dụng mô-đun smptd đây sẽ là một lớn câu trả lời – Jay
Chú giải này là rất xa từ một máy chủ thư điện tử thật sự bởi vì hầu hết các thực công việc (xếp hàng và truyền lại) được thực hiện bởi 'mail.server.com', không phải bởi chương trình Python. – bortzmeyer
bạn nói đúng. nó rất xa một máy chủ thư thực sự. –