我正在研究Python中的一個腳本,該腳本檢查黑名單中的IP地址,並僅在IP顯示在列表中時發送電子郵件。該腳本將設置爲每15分鐘運行一次,但我只希望它發送電子郵件,如果IP位於列表中,並且電子郵件在過去24小時內未發送。當前代碼:發送電子郵件如果在過去24小時內未發送
import sys
import subprocess
import smtplib
import datetime
username = ''
password = ''
fromaddr = ''
toaddr = ''
server = smtplib.SMTP(host=,port=)
server.starttls()
server.ehlo()
server.esmtp_features["auth"] = "LOGIN PLAIN"
server.login(username,password)
sentFolder = server.select("SENT",readonly=TRUE)
recentSent = sentFolder["Date"]
OneDayAgo = date.today()-timedelta(days=1)
msg = ''
staticIPAddress = ''
dnsHostname = staticIPAddress + ".bl.spamcop.net"
p = subprocess.check_output("nslookup " + dnsHostname1,stderr=subprocess.STDOUT,shell=False)
if ('Non-existent' not in str(p) and recentSent < OneDayAgo):
server.sendmail(fromaddr, toaddrs, msg)
我遇到的錯誤發生在:
sentFolder = server.select("SENT",readonly=TRUE)
錯誤代碼是: AttributeError: 'SMTP' object has no attribute 'select'
我測試過的腳本的其餘部分(不包括那件和沒有最近Sent < OneDayAgo作品),它似乎工作正常。
任何幫助確定如何使「只發送,如果沒有在過去24小時內發送」一件作品將非常感激。
你期待'server.select()'做什麼?你有沒有找到說明它會做什麼的文檔? –
@Robᵩ我用這個基於[this](http://stackoverflow.com/questions/5572589/python-forward-imap-email-with-attachments-imaplib-smtplib)SO問題。 –
在這個問題中,'M'是['imaplib.IMAP4_SSL'](http://docs.python.org/2/library/imaplib.html)對象。在你的程序中,'server'是一個[''smtplib.SMTP'](http://docs.python.org/2/library/smtplib.html)。它們完全無關。 –