x32x01
  • by x32x01 ||
Automate Sending Daily Email Reports in Python :

Step 1: Writing the Python Script

Install Required Libraries
You’ll need to install a library for sending emails. smtplib and email are built-in Python libraries, so you don’t need to install them separately. For handling HTML emails or attachments, you might need additional libraries like email for crafting the email content.
Bash:
pip install schedule

Create the Email Script
Below is a sample Python script to send an email. Adjust the smtp_server, port, sender_email, receiver_email, and password as necessary.
Python:
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from email.utils import formataddr
import schedule
import time

def send_email():
    # Email server configuration
    smtp_server = 'smtp.example.com'
    port = 587  # For starttls
    sender_email = '[email protected]'
    receiver_email = '[email protected]'
    password = 'your-email-password'

    # Create the email content
    subject = "Daily Report"
    body = "Hello,\n\nThis is your daily report.\n\nBest regards,\nYour Automation Script"

    # Create the email message
    msg = MIMEMultipart()
    msg['From'] = formataddr(('Sender Name', sender_email))
    msg['To'] = receiver_email
    msg['Subject'] = subject

    # Attach the email body
    msg.attach(MIMEText(body, 'plain'))

    # Optional: Attach a file
    # filename = "report.pdf"
    # with open(filename, "rb") as attachment:
    #     part = MIMEApplication(attachment.read(), Name=filename)
    #     part['Content-Disposition'] = f'attachment; filename="{filename}"'
    #     msg.attach(part)

    # Send the email
    try:
        server = smtplib.SMTP(smtp_server, port)
        server.starttls()  # Secure the connection
        server.login(sender_email, password)
        server.sendmail(sender_email, receiver_email, msg.as_string())
        print("Email sent successfully.")
    except Exception as e:
        print(f"Error: {e}")
    finally:
        server.quit()

# Schedule the email to be sent daily at 8:00 AM
schedule.every().day.at("08:00").do(send_email)

# Run the schedule
while True:
    schedule.run_pending()
    time.sleep(60)  # Wait one minute

Explanation:
  • smtplib: Used to send the email.
  • email.mime.multipart and email.mime.text: Used to create the email content and structure.
  • schedule: Used to schedule the script to run at a specific time each day.

Step 2: Setting Up the Script to Run Daily

To ensure your script runs daily, you have a few options:

Option A: Use a Task Scheduler (Windows)
  1. Open Task Scheduler:
    • Press Win + R, type taskschd.msc, and press Enter.
  2. Create a Basic Task:
    • Click "Create Basic Task" and follow the prompts to set up a task.
    • Set the trigger to "Daily" and specify the time.
    • Choose "Start a Program" and point to your Python executable (e.g., python.exe) and add the script file path as an argument.
  3. Finish and Save:
    • Complete the setup and ensure the task is saved.
Option B: Use Cron Jobs (Linux/Mac)
  • Open the Crontab Editor:
    • Run crontab -e in the terminal.
  • Add a Cron Job:
    • Add a line to schedule your script. For example, to run at 8:00 AM daily: 0 8 * * * /usr/bin/python3 /path/to/your_script.py
  • Adjust /usr/bin/python3 to the path of your Python interpreter and /path/to/your_script.py to the path of your script.
    1. Save and Exit:
      • Save the file and exit the editor.
Option C: Use a Cloud Scheduler (Optional)
If you prefer not to keep a server running, consider using cloud-based schedulers like AWS Lambda with CloudWatch Events or Google Cloud Functions with Cloud Scheduler. These services can trigger your script without the need for a local server.

Conclusion
You now have a basic script for sending daily email reports and instructions on how to set it up to run daily. Adjust the script and scheduling based on your needs and environment. If you encounter any issues, feel free to ask for further assistance!
 

Similar Threads

x32x01
Replies
0
Views
116
x32x01
x32x01
x32x01
  • x32x01
Replies
0
Views
263
x32x01
x32x01
x32x01
Replies
0
Views
131
x32x01
x32x01
x32x01
Replies
0
Views
140
x32x01
x32x01
x32x01
Replies
0
Views
165
x32x01
x32x01
TAGs: Tags
python script send email

Register & Login Faster

Forgot your password?

Latest Resources

Forum Statistics

Threads
517
Messages
518
Members
45
Latest Member
Tacola
Back
Top