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