import os
import picamera
import sense_hat
import time
import yagmail
camera = picamera.PiCamera()
camera.resolution = (1280, 720)
framerate = 5
camera.framerate = framerate
camera.annotate_text_size = 18
senseHat = sense_hat.SenseHat()
gps = "GPS Data"
def annotate():
timeNow = "Time: " + str(time.strftime("%a %d %b %Y %H:%M:%S", time.localtime()))
temperatureNow = "Temperature: " + str(round(senseHat.get_temperature())) + " C"
humidityNow = "Humidity: " + str(round(senseHat.get_humidity())) + "%"
locationNow = "Location: " +gps
annotation = timeNow + "\n" + temperatureNow + "\n" + humidityNow + "\n" + locationNow
return annotation
def getPicture(annotation):
filename = "/home/pi/Pictures/" + str(time.strftime("%Y-%m-%d@%H:%M:%S", time.localtime())) + ".jpg"
try:
camera.start_preview()
time.sleep(5)
camera.annotate_text = annotation
camera.capture(filename)
camera.stop_preview()
except Exception as error:
print(error)
return filename
def getVideo(length):
filename = "/home/pi/Videos/" + str(time.strftime("%Y-%m-%d@%H:%M:%S", time.localtime())) + ".mp4"
try:
camera.start_recording("/home/pi/testVideo.h264")
for index in range(length):
camera.annotate_text = (annotate())
time.sleep(1)
camera.stop_recording()
except Exception as error:
print(error)
os.system("ffmpeg -r " + str(framerate) + " -i /home/pi/testVideo.h264 -vcodec copy " + filename)
return filename
def sendMail(filename):
receiver = ["yoimgeorge25@gmail.com", "otheremail@gmail.com"]
body = "Sent at " + str(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) + "."
try:
gmail = yagmail.SMTP("email@gmail.com", "password")
gmail.send(
to = receiver,
subject = "Paul's Balloon",
contents = body,
attachments = filename
)
except Exception as error:
print(error)
print("Message sent.")
sendMail(getPicture(annotate()))
Monthly Archives: May 2019
Sending Emails in Python
Sending an email in Python with no attachments.
import smtplib, ssl
smtp_server = "smtp.gmail.com"
port = 587 # For starttls
sender_email = "my@gmail.com"
password = input("Type your password and press enter: ")
# Create a secure SSL context
context = ssl.create_default_context()
# Try to log in to server and send email
try:
server = smtplib.SMTP(smtp_server,port)
server.ehlo() # Can be omitted
server.starttls(context=context) # Secure the connection
server.ehlo() # Can be omitted
server.login(sender_email, password)
# TODO: Send email here
except Exception as e:
# Print any error messages to stdout
print(e)
finally:
server.quit()
Snapping a still image in Python
from picamera import PiCamera
camera = PiCamera()
camera.capture('/home/pi/Desktop/snapshot.jpg')
SENDING AN EMAIL WITH AN ATTACHMENT
import email, smtplib, ssl
from email import encoders
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
subject = "An email with attachment from Python"
body = "This is an email with attachment sent from Python"
sender_email = "my@gmail.com"
receiver_email = "your@gmail.com"
password = input("Type your password and press enter:")
# Create a multipart message and set headers
message = MIMEMultipart()
message["From"] = sender_email
message["To"] = receiver_email
message["Subject"] = subject
message["Bcc"] = receiver_email # Recommended for mass emails
# Add body to email
message.attach(MIMEText(body, "plain"))
filename = "document.pdf" # In same directory as script
# Open PDF file in binary mode
with open(filename, "rb") as attachment:
# Add file as application/octet-stream
# Email client can usually download this automatically as attachment
part = MIMEBase("application", "octet-stream")
part.set_payload(attachment.read())
# Encode file in ASCII characters to send by email
encoders.encode_base64(part)
# Add header as key/value pair to attachment part
part.add_header(
"Content-Disposition",
f"attachment; filename= {filename}",
)
# Add attachment to message and convert message to string
message.attach(part)
text = message.as_string()
# Log in to server using secure context and send email
context = ssl.create_default_context()
with smtplib.SMTP_SSL("smtp.gmail.com", 465, context=context) as server:
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, text)
USING YAGMAIL
import yagmail
receiver = "your@gmail.com"
body = "Hello there from Yagmail"
filename = "document.pdf"
yag = yagmail.SMTP('mygmailusername', 'mygmailpassword')
yag.send(
to=receiver,
subject="Yagmail test with attachment",
contents=body,
attachments=filename,
)
pip3 install yagmail 🙂
Source