gpt4 book ai didi

python - SMTP 向许多收件人发送邮件但未收到邮件

转载 作者:太空宇宙 更新时间:2023-11-04 06:21:40 24 4
gpt4 key购买 nike

我编写了一个 Python 脚本来自动向我的 friend 发送一些信息。我使用了 SMTPlib,如果我只发送给我或另外一封电子邮件,它会很好用。

当我尝试发送到 17 封电子邮件(包括我的发件人电子邮件)时,它会显示在基于网络的 Gmail 的已发送邮件中。我看到邮件已发送,但我没有收到。只有第一个收件人收到了电子邮件。如果我从那封邮件回复所有人,那么每个人都只会收到那个回复。

我不明白为什么当我从脚本发送它时他们没有收到它,我让我的 friend 检查垃圾邮件,但她没有找到任何东西。

这是我的代码:

#!/usr/bin/env python
import smtplib
import csv
from datetime import datetime, timedelta

SMTP_SERVER = 'smtp.gmail.com'
SMTP_PORT = 587

sender = 'MYBOT@gmail.com'

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 = ['MYBOT@gmail.com']

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

我向 msg['To'] 和 sendmail() 传递了一个包含以逗号分隔的所有收件人的字符串。对于 msg['To'] 是正确的,但是对于 sendmail,我必须使用列表。

关于python - SMTP 向许多收件人发送邮件但未收到邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11745171/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com