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