SMTP邮件发送给多个收件人,但不接受它
问题描述:
我已经写了一个Python脚本来自动发送一些信息给我的朋友。我使用SMTPlib,如果我只发送给我或另外添加另一封邮件,效果很好。SMTP邮件发送给多个收件人,但不接受它
当我尝试通过脚本发送到电子邮件17(包括我的发送者电子邮件),在网络基础的Gmail,然后我检查发送的邮件时,我看到的邮件已发送,但我没有收到。 只有第一个接收者收到该邮件。 如果我从邮件全部答复,大家只拿到了该答复。
我无法弄清楚他们为什么不接受它,当我从剧本送,我问我的垃圾邮件的朋友检查,但她并没有发现任何东西。
这是我的代码:
#!/usr/bin/env python
import smtplib
import csv
from datetime import datetime, timedelta
SMTP_SERVER = 'smtp.gmail.com'
SMTP_PORT = 587
sender = '[email protected]'
password = None
with open('pass', 'rt') as f:
password = f.read().strip('\n')
def send_mail(recipient, subject, body):
"""
Send happy bithday mail
"""
headers = ["From: " + sender,
"Subject: " + subject,
"To: " + recipient,
"MIME-Version: 1.0",
"Content-Type: text/html"]
headers = "\r\n".join(headers)
smtp = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
smtp.ehlo()
smtp.starttls()
smtp.ehlo
smtp.login(sender, password)
body = "" + body +""
smtp.sendmail(sender, recipient, headers + "\r\n\r\n" + body)
print "Sent to ",
print recipient
smtp.quit()
def send_happybirthday(recipient):
body = """Happy birthday to you!
\n<br/>From C2k8pro with love
"""
subject ='[BirthReminder] Happy birthday to you! from C2k8pro'
send_mail(recipient, subject, body)
def send_notification(all_mails, names):
body = """Tomorrow is birthday of %s""" % names
send_mail(all_mails, body, body)
def test_send_mail():
notify_body = """Tomorrow is birthday of """
recipients = ['[email protected]']
today = datetime.now()
format = "%d-%m-%Y"
print today
today_in_str = datetime.strftime(today, format)
def read_csv():
FILENAME = 'mails.csv'
reader = csv.reader(open(FILENAME, 'rt'), delimiter=',')
today = datetime.now()
one_day = timedelta(days=1)
tomorrow = today + one_day
all_mails = []
str_format = "%d/%m"
str_today = today.strftime(str_format)
str_tomorrow = tomorrow.strftime(str_format)
print 'Today is ', str_today
tomorrow_birth = []
for row in reader:
name = row[1].strip()
dob = row[2]
dmy = dob.split("/")
mail = row[3]
all_mails.append(mail)
#TODO fix dob with only 1 digit
birth_date = dmy[0] + "/" + dmy[1]
if str_today == birth_date:
print 'Happy birthday %s' % name
try:
send_happybirthday(mail)
except Exception, e:
print e
elif str_tomorrow == birth_date:
tomorrow_birth.append(name)
print "Tomorrow is %s's birthday" % name
# Remove empty string
all_mails = filter(None, all_mails)
print 'All mails: ', len(all_mails)
str_all_mails = ', '.join(all_mails)
if tomorrow_birth:
all_tomorrow = ', '.join(tomorrow_birth)
send_notification(str_all_mails, all_tomorrow)
def main():
read_csv()
if __name__ == "__main__":
main()
谁能解释这一点。谢谢!
答
我发现溶液从这里
Send Email to multiple recipients from .txt file with Python smtplib
我通过一个字符串包含()由逗号分隔味精[“为”]与sendmail所有收件人。 msg ['To']的确如此,但使用sendmail时,我必须使用列表。
能否请您提供您的代码? – Max 2012-07-31 17:15:47
也许我从这里找到了解决方案: http://*.com/questions/6941811/send-email-to-multiple-recipients-from-txt-file-with-python-smtplib 我将相同的字符串传递给msg [“为”]与sendmail(FROM_EMAIL,电子邮件,msg.as_string()) – HVNSweeting 2012-07-31 17:21:03
Downvote:问题是不可能的,没有看到代码或错误消息的办法。 – jforberg 2012-07-31 17:24:45