smtplib sending duplicate emails

Viewed 27

I have been sending excel files automatically using the smtplib package and a linux machice a using scheduled crontab job. I recently updated the email distribution list and now instead of the email sending once its sending 4 times. Any help with this would be hugely appreciated!

Here's my code:

import smtplib
from email.message import EmailMessage

def Emailer():
    files = ['file1.csv', 'file2.csv', 'file3.csv', 'file.log']
    new_attach = [f"file1{today}.csv",f"file2{today}.csv",'file3.csv', 'file.log' ]
    new_ref = {orig_file: new_file for orig_file, new_file in zip(files, new_attach)}
    msg = EmailMessage()
    msg['Subject'] = "Subject"
    msg['From'] = 'from@from.com'
    msg['To'] = ['user1@user.com', 'user2@user.com', 'user3@user.com', 'user4@user.com']
    msg['Cc'] = ['user5@user.com', 'user6@user.com', 'user7@user.com', 'user8@user.com', 'user9@user.com', \
                 'user11@user.com', 'user111@user.com', 'user1111@user.com']
    msg.set_content( f""" <p>Message content here!</p>""",  subtype='html')
  
    for filename in files:
        with open(filename, 'rb') as file:
            file_data = file.read()
            new_name = new_ref[file.name]
            msg.add_attachment(file_data, maintype='application', subtype='octet-stream', filename=new_name)

    try:
        with smtplib.SMTP('sendsmtp.server.com', 25) as s:
                    s.send_message(msg)
                    # s.set_debuglevel(2)
                    print('email has been sent')
                              
    except Exception as ex:
      print(ex, "Message was not sent!")
      
0 Answers
Related