[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