Python - Sendmail script
#!/usr/bin/python
import os
import smtplib
import sys
from email.Utils import formatdate
import urllib2
import json
import datetime
def latest_php_releases():
release_info = {}
try:
response = urllib2.urlopen('http://us3.php.net/releases/active.php')
json_string = response.read()
release_info = json.loads(json_string)
except:
print "Unable to connect/parse json"
pass
return release_info
def determine_unknown_versions( php_version_info ):
output = []
for version_major in php_version_info:
#print "Version Major %s " % version_major
for version_minor in php_version_info[version_major]:
#print "* Version Minor %s " % version_minor
version_info = php_version_info[version_major][version_minor]
#print "* Version: %s" % version_info["version"]
version = version_info["version"]
if not is_known_version( version ):
output.append( version )
record_known_version( version )
return output
def is_known_version(php_version):
directory = "%s/.phpversions" % os.path.expanduser("~")
path = "%s/%s" % (directory,php_version)
return os.path.isfile(path)
def record_known_version(php_version):
directory = "%s/.phpversions" % os.path.expanduser("~")
if not os.path.exists(directory):
os.makedirs(directory)
path = "%s/%s" % (directory,php_version)
f = open(path,'w')
f.write(str(datetime.datetime.now()))
f.write("\n")
f.close()
return
def mkdir(directory):
if not os.path.exists(directory):
os.makedirs(directory)
def main():
php_version_info = latest_php_releases()
unknown_versions = determine_unknown_versions( php_version_info )
result = unknown_versions
result = filter(len, result)
if len(result) == 0:
return 0
result.insert(0,'--------------')
result.insert(0,'New PHP Versions Detected on php.net')
result.insert(0,'--------------')
body = "\n".join(result)
subject = "[php version checker] [automated]"
to_emails = [
'john.doe@example.com',
]
from_email = 'no-reply@example.com'
to_list = ",".join(to_emails)
rfc822date = formatdate()
msg = (
"To: %(to_list)s\r\n"
"From: %(from_email)s\r\n"
"Reply-To: %(from_email)s\r\n"
"Subject: %(subject)s\r\n"
"Date: %(rfc822date)s\r\n"
"Content-type: text/plain\r\n"
"\r\n"
"%(body)s\r\n")
msg = msg % locals()
#print(msg)
#server = smtplib.SMTP_SSL("mailserver.example.com", 465)
#server.login("user", "mailpass")
server = smtplib.SMTP("postfix.example.com", 25)
server.sendmail(from_email, to_emails, msg)
server.quit()
return 0
if __name__ == "__main__":
import sys
#os.chdir(sys.path[0])
sys.exit(main())code snippets are licensed under Creative Commons CC-By-SA 3.0 (unless otherwise specified)
|