我试图用Python给多个人发电子邮件。在def getRecipients(fileWithRecipients):
recipients = []
f = open(fileWithRecipients, 'r')
for line in f:
recipients.append(line)
return recipients
def test_email():
gmail_user = "csarankings@gmail.com"
gmail_pass = getPassword("pass.txt")
FROM = "csarankings@gmail.com"
TO = getRecipients("recipients.txt")
date = getCurrentDate()
SUBJECT = "Current CSA Rankings: " + date
TEXT = createEmailMessageFromFile("rankings.txt")
message = """\From: %s\nTo: %s\nSubject: %s\n\n%s """ % (FROM, ", ".join(TO), SUBJECT, TEXT)
try:
server = smtplib.SMTP("smtp.gmail.com", 587)
server.ehlo()
server.starttls()
server.login(gmail_user, gmail_pass)
server.sendmail(FROM, TO, message)
server.close()
print("it worked")
except:
print("it failed :(")
不管出于什么原因,我的电子邮件只发送给收件人列表中的第一个收件人(我的test_email()函数中的TO变量)。在
我的收件人文件每行只包含一个电子邮件地址(目前只有两个)。我认为我的getRecipients()函数可能有问题,所以我只是将两封电子邮件硬编码到TO变量中,它适用于第一个电子邮件地址,而不是第二个电子邮件地址。在
知道为什么会这样吗?我怀疑这与:
^{pr2}$
在这里我设置了我的message变量。在
注意:我的test_email()很大程度上是基于这里投票最多的答案:
编辑:值得一提的是,当我将一个电子邮件地址的列表硬编码到TO变量中时,主题会在电子邮件中正确显示。当我使用getRecipients()函数时(即使在收件人.txt文件),它在电子邮件正文中显示:Subject: Current CSA Rankings 6/13/15
不确定是否相关,但认为可能与问题有关。在
编辑2:我不认为我的问题是重复的:
因为,当我使用smtplib.sendmail()函数时,我根本不使用email模块,所以我们的代码非常不同。。。在