I need to send a certain email to a lot of different addresses, one recipient at a time. It has an attachment.
So far, I've programmed this as such :
1) create a Thread object per mail-address (looping through the recipients list).
2) within each Thread object, create the MIMEMultipart() message.
3) within each Thread object, send the mail through smtplib.SMTP("smtp.gmail.com:587")
It's working fine. 
The problem with this approach is that the attachment has to be attached separately for every single email. Is there a way to only attach it once ? A global MIMEMultipart() message is not possible because different threads would have to change it (to change the recipient's address).
The other approach is to use an outside service, such as icontact or mailchimp to manage your important messages. That can be done on a cloud based service, and can provide legal compliance. With some, you can even determine whether the mail has been read!
They might even be able to set up opt-in SMS for you to use with your clients.
Python - sending multiple emails with same attachment on separate threads