Я работаю над скриптом на Python, который проверяет IP-адрес по черному списку и отправляет электронное письмо, только если IP-адрес отображается в списке. Сценарий будет настроен на запуск каждые 15 минут, но я хочу, чтобы он отправлял электронное письмо только в том случае, если IP-адрес есть в списке, а электронное письмо не было отправлено за последние 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'
Я протестировал остальную часть скрипта (без этой части и без частей недавнего отправления ‹ OneDayAgo), и, похоже, он работает нормально.
Мы будем очень признательны за любую помощь в выяснении того, как сделать «отправлять только, если не отправлено в течение последних 24 часов».
server.select()
? Вы нашли где-нибудь документацию, говорящую, что это будет делать? - person Robᵩ   schedule 29.01.2014M
— это объектimaplib.IMAP4_SSL
. В вашей программеserver
являетсяsmtplib.SMTP
. Они совершенно не связаны. - person Robᵩ   schedule 29.01.2014import smtplib
, .select пришел оттуда. Наверное, надо было еще немного углубиться в документацию....мне плохо. - person Corey Christensen   schedule 29.01.2014