値が特定の基準と一致する場合に電子メールを送信するスクリプトを作成しました。毎回のチェックで複数の電子メールの代わりに1つの電子メールを送信したいと思っています。私は別の機能を投げ入れることで軽減できると思ったが、それをどうやって行うのか分からない。どのようにこれを達成するための任意のアイデア?代わりに、おそらく配列や辞書に、メッセージ本文に入るに項目を追加するためにそれを使用し、電子メールを送信するためにcheck
を使用してのCSVから一度読んだ1通のメールを送信する方法
import csv, requests, xmltodict, smtplib, email.utils
from email.mime.text import MIMEText
def sendEmail(host, value, devicename):
# Create the message
msg = MIMEText('This is the body of the message.')
msg['To'] = email.utils.formataddr(('Recipient', 'XXXXXX'))
msg['From'] = email.utils.formataddr(('Author', 'XXXXX'))
msg['Subject'] = 'Simple test message'
server = smtplib.SMTP('XXXXXXX')
server.set_debuglevel(True) # show communication with the server
try:
server.sendmail('XXXXXX', ['XXXXXX'], msg.as_string())
finally:
server.quit()
def check(hostIP, value):
xml = """<?xml version="1.0" encoding="iso-8859-1"?>"""
headers = {'Content-Type': 'application/xml'}
response = requests.post('http://' + hostIP + '/RPC2', data=xml, headers=headers).text
doc = xmltodict.parse(response)
uptime = str(doc['response'])
maxtime = '300'
time = str(uptimeValue)
day = time // (24 * 3600)
if day >= maxtime:
print 'it is'
sendEmail(str(hostIP), str(value), str(devicename))
else:
print "it is not!"
def main():
try:
with open('list.csv', 'r') as file:
reader = csv.DictReader(file)
for row in reader:
check(row['Host'], row['Value'])
except Exception as error:
print ValueError("Could not properly read the csv file")
sys.exit(0)
if __name__ == "__main__":
main()
は1つの電子メールは今複数の電子メールメッセージを介して分割情報のすべてが含まれているのでしょうか? –
「メールデータ」はありません。あなたは**空の**メールを送信しています。 – stovfl
@ScottHunter - うん、1つのメールにすべてのデータが含まれているようにしたい。今すぐスクリプトを実行すると、ループごとに1つのメールが送信されます – yusof