Automate daily email reports in Python with this step-by-step guide. Learn to install libraries, configure settings, schedule emails, and run scripts as background processes.
Below is a step-by-step guide and script to automate sending daily email reports using Python.
Step 1: Install Required Libraries
First, you need to install the required Python libraries. You can use pip to install them:
pip install smtplib email schedule
Step 2: Create the Script
Here’s a Python script to automate sending daily email reports:
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import schedule
import time
import datetime
# Function to send email
def send_email():
# Email configuration
smtp_server = "smtp.example.com"
smtp_port = 587
sender_email = "your_email@example.com"
sender_password = "your_password"
receiver_email = "receiver_email@example.com"
# Email content
subject = "Daily Report"
body = f"This is your daily report for {datetime.datetime.now().strftime('%Y-%m-%d')}."
# Create message container
msg = MIMEMultipart()
msg['From'] = sender_email
msg['To'] = receiver_email
msg['Subject'] = subject
# Attach body text
msg.attach(MIMEText(body, 'plain'))
# Send email
try:
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(sender_email, sender_password)
text = msg.as_string()
server.sendmail(sender_email, receiver_email, text)
server.quit()
print("Email sent successfully")
except Exception as e:
print(f"Failed to send email: {e}")
# Schedule the email to be sent daily at a specific time
schedule.every().day.at("09:00").do(send_email)
# Keep the script running
while True:
schedule.run_pending()
time.sleep(60)
Step 3: Configure Email Settings
Replace the following placeholders in the script with your actual email settings:
smtp_server: Your SMTP server address.smtp_port: Your SMTP server port (587 for TLS).sender_email: Your email address.sender_password: Your email password.receiver_email: The recipient’s email address.
Step 4: Schedule the Email
In the script, the line schedule.every().day.at("09:00").do(send_email) schedules the email to be sent every day at 9:00 AM. You can change the time as needed.
Step 5: Run the Script
Run the script using Python. The script will continuously run and check every minute if it’s time to send the email.
python your_script.py
Step 6: (Optional) Run the Script as a Background Process
To run the script as a background process, you can use tools like nohup or systemd on Linux, or Task Scheduler on Windows.
For example, using nohup on Linux:
nohup python your_script.py &
This will run the script in the background even after you close the terminal.
Summary
- Install required libraries.
- Configure email settings in the script.
- Schedule the email sending time.
- Run the script.
- (Optional) Run the script as a background process for continuous operation.
That’s it! You now have an automated system for sending daily email reports using Python.


Leave a Reply