[Tutor] smptlib question

David david at abbottdavid.com
Tue Jun 9 02:13:15 CEST 2009


Albert-jan Roskam wrote:
> (sorry for posting this again, but something might have gone wrong)
> 
> Hi,
> 
> I made a very simple program to send everybody I know a change of address I am parsing the .msg files with another function, which returns a set called 'recipients'.
> 
> The code below works, but it displays all recipients in the 'to' field. That is, in the Nth iteration, N recipients are shown. So the first mail has one recipient in the 'to' field, the second mail has the first and the second recipient, and so forth. I only want one recipient to be shown in the 'to' field. It's ugly and since I have a lot of email addresses to parse (4 years worth of emails!), it would become a very long list.
> 
> Pointers, anyone?
> 
> Thanks!
> Albert-Jan
> Python 2.5, Windows XP
> 
> import smtplib, email.utils
> from email.mime.text import MIMEText
> 
> msg = MIMEText("""Dear reader:\n\nblaaaaah blaah blaah.\nSincerely,\nThe dude""")
> 
> sender = 'ren at stimpy.com'
> recipients = ['happyhappy at joy.com', 'you at eediot.com]
> for no, recipient in enumerate(recipients):
>     print "--> Sending message to: %s (%s of %s)" % (recipient, no+1, len(recipients))
>     msg['To'] = email.utils.formataddr((recipient, recipient))
>     print msg['To']
>     msg['From'] = email.utils.formataddr(('Cool dude', sender))
>     msg['Subject'] = 'Change of email address'
> 
>     server = smtplib.SMTP("mysmtpserver.isp.com")
>     server.set_debuglevel(True)
>     try:
>         server.sendmail(sender, [recipient], msg.as_string())
>     finally:
>         server.quit()
> 
> 
>       
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
> 
> 

Hi Albert,
I got this to work;

#!/usr/bin/python

import smtplib, email.utils
from email.mime.text import MIMEText
from email.MIMEMultipart import MIMEMultipart
from email.Utils import COMMASPACE, formatdate

def recipients():
     recipients = ['happyhappy at joy.com', 'you at eediot.com]
     for no, recipient in enumerate(recipients):
         print "--> Sending message to: %s (%s of %s)" % (recipient, 
no+1, len(recipients))
         message(recipient)

def message(recipient):
     body = "Dear reader:\n\nblaaaaah blaah blaah.\nSincerely,\nThe dude"
     send_mail([recipient], 'Change of email address', body)


def send_mail(send_to, subject, text, server="mail.stimpy.com"):
     send_from = "ren at stimpy.com"
     msg = MIMEMultipart()
     msg['To'] = COMMASPACE.join(send_to)
     msg['Date'] = formatdate(localtime=True)
     msg['From'] = send_from
     msg['Subject'] = subject
     msg.attach( MIMEText(text) )
     smtp = smtplib.SMTP(server)
     smtp.sendmail(send_from, send_to, msg.as_string())
     smtp.close()

recipients()

-- 
Powered by Gentoo GNU/Linux
http://linuxcrazy.com


More information about the Tutor mailing list