Send an Email From the Phidget SBC4 With Python
Introduction
In this project, we will create a simple Python program that sends an email from a Phidget SBC4.
Parts
Configure Email (Gmail)
In order to send emails from the Phidget SBC4, we will use the smtplib module that is included in the Python Standard Library. We will be using a Gmail account for this demonstration.
Turn On 2-Step Verification
Navigate to your account settings and enable 2-Step Verification.
Set App Password
At the bottom of the 2-Step Verification page, set an app password. You will use this later in your Python program.
SBC Configuration
Install Python
If you haven't already installed Python on the Phidget SBC4, navigate to System > Packages and press Install Python. Instructions to install Python can also be found here.
Create Project
Navigate to Projects and create a new project called PythonEmail
Python Code
Add the following python code to a Python file in your new project. You will need to enter your email address and your app password.
#For email
import smtplib
import ssl
#For timestamp
from datetime import datetime
import time
SMTP_SERVER = "smtp.gmail.com"# Change this if not using Gmail
SMTP_PORT = 465 # Change this if not using Gmail
USERNAME = "YOUR_EMAIL@gmail.com"
PASSWORD = "YOUR_APP_PASSWORD"
TO = USERNAME # Select a recipient, for now, just send an email to yourself
def sendMessage(time):
context = ssl.create_default_context() #create a secure SSL context
with smtplib.SMTP_SSL(SMTP_SERVER,SMTP_PORT,context=context) as server: #connect to the email server and send the alert message
server.login(USERNAME,PASSWORD) #here we log in with our username and password.
#The message formatting must be done very specifically so we have the right indentation and spaces.
#"Subject:" must be the first line in our string. It will mark the text we want in our subject line.
#We can use the format function to fill in the details of the email.
message = """Subject: This is a subject heading!
Hello,
This is an email from a Phidget SBC!
Notice that, after the subject line, you can format this like a normal email.
Formatting works too. For example, here's the time: {0}
""".format(time)
server.sendmail(USERNAME,TO,message) #This statement sends the email
def main():
now = datetime.now()
sendMessage(now.strftime("%m/%d/%Y, %H:%M:%S"))
main()
Result
After running the Python program, an email will be sent out.
This functionality can now be paired with Phidget sensors to create an alert system. For example, you could use a temperature sensor to monitor a server room, and send an email if the temperature gets too hot.