Skip to content

Instantly share code, notes, and snippets.

@kwarodom
Created March 29, 2018 17:43
Show Gist options
  • Save kwarodom/e5c456fea0fe6e5a065fb6071c990106 to your computer and use it in GitHub Desktop.
Save kwarodom/e5c456fea0fe6e5a065fb6071c990106 to your computer and use it in GitHub Desktop.
emailpython
# -*- coding: utf-8 -*-
# This Email class is for an agent wishing to send an email to any mail server
import smtplib # simple mail transfer protocol library
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import datetime
class EmailService:
# method1: GET a model number of a device by XML read
def sendEmail(self, fromaddr, recipients, username, password, subject, text, mailServer):
try:
# agent snippet to send notification to a building operator
self.fromaddr = fromaddr
self.recipients = recipients
self.username = username
self.password = password
self.msg = MIMEMultipart()
self.msg['From'] = self.fromaddr
self.msg['To'] = ",".join(self.recipients)
self.msg['Subject'] = subject
self.text = text
self.msg.attach(MIMEText(self.text))
self.server = smtplib.SMTP(mailServer)
self.server.ehlo()
self.server.starttls()
self.server.ehlo()
self.server.login(self.username, self.password)
self.server.sendmail(self.fromaddr, self.recipients, self.msg.as_string())
self.server.quit()
print("Email is sent successfully")
except:
EmailService
print('Error: Connection with SMTP server failed')
# This main method will not be executed when this class is used as a module
def main():
# create an object with initialized data from DeviceDiscovery Agent
# requirements for instantiation1. model, 2.type, 3.api, 4. address
params = {"grid_energy_import": 10, "grid_electricity_bill": 40, "grid_avg_power":300, "solar_energy_generation": 20,
"solar_electricity_bill": 80, "solar_avg_power": 1200, "load_energy_consumption": 30,
"load_electricity_bill": 120, "load_avg_power": 1300}
sendText = "Dear Sisaengtham School,\n " \
"\n" \
"\tHere is your energy report for {date},\n" \
"\n" \
"\t1. Grid: Energy Imported={grid_energy_import} kWh, Electricity Bill={grid_electricity_bill} Baht, Average Power={grid_avg_power} W\n" \
"\t2. Solar: Energy Generated={solar_energy_generation} kWh, Bill Saving from Solar={solar_electricity_bill} Baht, Average Power={solar_avg_power} W\n"\
"\t3. Load: Energy Consumed={load_energy_consumption} kWh, Actual Bill if Without Solar={load_electricity_bill} Baht, Average Power={load_avg_power} W\n"\
"\n" \
"Best Regard,\n" \
"PEA HiVE Development Team,\n" \
"email: peahive@gmail.com,\n" \
"FB: facebook.som/peahiveplatform,\n" \
"Line: @peahive" \
.format(date=datetime.datetime.now().date(), grid_energy_import=params['grid_energy_import'], grid_electricity_bill=params['grid_electricity_bill'],
grid_avg_power=params['grid_avg_power'], solar_energy_generation=params['solar_energy_generation'],
solar_electricity_bill=params['solar_electricity_bill'], solar_avg_power=params['solar_avg_power'],
load_energy_consumption=params['load_energy_consumption'],
load_electricity_bill=params['load_electricity_bill'], load_avg_power=params['load_avg_power'],)
print(sendText)
email = EmailService()
email.sendEmail(fromaddr='peahive@gmail.com', recipients=['kwarodom@vt.edu', 'peahive@gmail.com', 'smarthome.pea@gmail.com'],
username='peahive@gmail.com', password='nbumnmwtqbeqcocc',
subject='HiVE Report', text=sendText, mailServer='smtp.gmail.com:587')
if __name__ == "__main__": main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment