通过配置文件向多个人发送电子邮件

时间:2010-11-02 16:44:47

标签: python email

我正在编写一个程序,该程序通过电子邮件发送给多个人,并从配置文件中获取地址。问题是,每次运行它只需要先解决并发送到那个。顺便说一下,这是在python中使用configparser模块。

继承我的代码:

reporter_email = '%s' %config.get("email", "reporter_email")
notification_emails = ['%s' %(config.get("email", "notification_emails"))]
to = '%s' %config.get("email", "to")
subject = '%s' %config.get("email", "subject") 
body = ('''%s\n
%s
%s''' %(config.get("email", "intro_body"), str(fileNames), config.get("email", "con_body")))

to = "To: %s\n" %(to)
subject = "Subject: %s\n\n" %(subject)

smtpObj = smtplib.SMTP('%s' %config.get("email", "portal"), 25)
smtpObj.sendmail(reporter_email, notification_emails, to + subject + body)         
smtpObj.quit()

3 个答案:

答案 0 :(得分:1)

问题在于:

notification_emails = ['%s' %(config.get("email", "notification_emails"))]

这将构建目标电子邮件列表,但在执行此行后,notification_emails包含单个项目。你必须使用某种循环(或列表理解)在这个列表中插入多个项目。

配置文件的内容是什么?如何从notification_emails条目中提取多个值?

(在执行脚本期间打印interrest变量的内容可以查看它们包含的内容,并且在调试时是一个很好的起始位置)

答案 1 :(得分:0)

拿地址扔进列表或字典, 之后使用“for loop”并发送电子邮件

其他方式:使用密送

答案 2 :(得分:0)

我使用了一个没有for循环的列表。

[Mail Recipients]
p1 = user1@email.com
p2 = user2@email.com
# users defined in config file

p1 = config.get('Mail Recipients', 'p1')
p2 = config.get('Mail Recipients', 'p2')
# pulling users into my script

sendTo = [p1,p2]

现在你可以使用smtp函数/方法并插入sendmail代码的'to:'部分中的'sendTo'变量,它应该可以工作。