Skip to content Skip to sidebar Skip to footer

Email Multiple Recipients Python

I'm trying to email multiple recipients using the pyton script below. I've searched the forum for answers, but have not been able to implement any of them correctly. If anyone has

Solution 1:

It should be more like

mail(["recipient1@email.com", "recipient2@email.com"],
   "Subject",
   "Message", 
   "attchachment")

You already have a array of recipients declared,that too globally,You can use that without passing it as an argument to mail.

Solution 2:

I wrote this bit of code to do exactly what you want. If you find a bug let me know (I've tested it and it works):

import email as em
import smtplib as smtp
import os

ENDPOINTS = {KEY: 'value@domain.com'}


classBoxWriter(object):

    def__init__(self):
        passdefdispatch(self, files, box_target, additional_targets=None, email_subject=None, body='New figures'):
        """
        Send an email to multiple recipients

        :param files: list of files to send--requires full path
        :param box_target: Relevant entry ENDPOINTS dict
        :param additional_targets: other addresses to send the same email
        :param email_subject: optional title for email
        """

        destination = ENDPOINTS.get(box_target, None)
        if destination isNone:
            raise Exception('Target folder on Box does not exist')

        recipients = [destination]
        if additional_targets isnotNone:
            recipients.extend(additional_targets)

        subject = 'Updating files'if email_subject isnotNone:
            subject = email_subject

        message = em.MIMEMultipart.MIMEMultipart()
        message['From'] = 'user@domain.com'
        message['To'] = ', '.join(recipients)
        message['Date'] = em.Utils.formatdate(localtime=True)
        message['Subject'] = subject

        message.attach(em.MIMEText.MIMEText(body + '\n' +'Contents: \n{0}'.format('\n'.join(files))))

        for f in files:
            base = em.MIMEBase.MIMEBase('application', "octet-stream")
            base.set_payload(open(f, 'rb').read())
            em.Encoders.encode_base64(base)
            base.add_header('Content-Disposition', 'attachment; filename={0}'.format(os.path.basename(f)))
            message.attach(base)

        conn = smtp.SMTP('smtp.gmail.com', 587)
        un = 'user@gmail.com'
        pw = 'test1234'
        conn.starttls()
        conn.login(un, pw)
        conn.sendmail('user@domain.com', recipients, message.as_string())
        conn.close()

Solution 3:

I was facing the same issue, I fixed this issue now. Here is my code -

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib
import datetime

def sendMail():
    message = MIMEMultipart()   
    message["To"] = "xxxxx@xxxx.com,yyyy@yyyy.com"
    message["Cc"] = "zzzzzz@gmail.com,*********@gmail.com"
    message["From"] = "xxxxxxxx@gmail.com"
    message["Password"] = "***************"
    server = 'smtp.gmail.com:587'

    try:
        now = datetime.datetime.now()
        message['Subject'] = "cxxdRL Table status (Super Important Message) - "+str(now)
        server = smtplib.SMTP(server)
        server.ehlo()
        server.starttls()
        server.login(message["From"], message["Password"])
        server.sendmail(message["From"], message["To"].split(",") + message["Cc"].split(","), message.as_string())
        server.quit()
        print('Mail sent')
    except:
        print('Something went wrong...')

sendMail()   

Post a Comment for "Email Multiple Recipients Python"