我正在编写一个程序,该程序通过电子邮件发送给多个人,并从配置文件中获取地址。问题是,每次运行它只需要先解决并发送到那个。顺便说一下,这是在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()
答案 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'变量,它应该可以工作。