使用python和gmail在同一线程中发送多封电子邮件
我有一个程序在运行。当该程序得到结果时,它会使用以下功能向我发送电子邮件:使用python和gmail在同一线程中发送多封电子邮件,python,email,Python,Email,我有一个程序在运行。当该程序得到结果时,它会使用以下功能向我发送电子邮件: def send_email(message): import smtplib gmail_user = OMITTED gmail_pwd = OMITTED FROM = OMITTED TO = OMITTED #must be a list try: #server = smtplib.SMTP(SERVER) server
def send_email(message):
import smtplib
gmail_user = OMITTED
gmail_pwd = OMITTED
FROM = OMITTED
TO = OMITTED #must be a list
try:
#server = smtplib.SMTP(SERVER)
server = smtplib.SMTP("smtp.gmail.com", 587) #or port 465 doesn't seem to work!
server.ehlo()
server.starttls()
server.login(gmail_user, gmail_pwd)
server.sendmail(FROM, TO, message)
#server.quit()
server.close()
print 'successfully sent the mail'
except:
print "failed to send mail"
免责声明:我在堆栈溢出的某个地方找到了这段代码。它不是我的。我删掉了其中的一些部分,因为它们似乎没有什么特别的意义
有时我的代码会得到很多结果,在不到20秒内我会收到150多封不同的电子邮件
如何修改上述函数,以便程序在同一线程中向我发送所有结果
如果您不了解我的想法,我希望我的收件箱如下所示:
sender@gmail.com(150) ...
... (other emails from other senders)
而不是:
sender@gmail.com ...
sender@gmail.com ...
sender@gmail.com ...
sender@gmail.com ...
sender@gmail.com ...
...
sender@gmail.com ...
... (other emails from other senders)
编辑
为了解决这个问题,我所需要做的就是重新插入以前删除的代码部分。全部功能如下:
def send_email(TEXT):
import smtplib
gmail_user = OMITTED
gmail_pwd = OMITTED
FROM = OMITTED
TO = OMITTED #must be a list
SUBJECT = "Big brother candidate"
#TEXT = "Testing sending mail using gmail servers"
# Prepare actual message
message = """\From: %s\nTo: %s\nSubject: %s\n\n%s
""" % (FROM, ", ".join(TO), SUBJECT, TEXT)
try:
#server = smtplib.SMTP(SERVER)
server = smtplib.SMTP("smtp.gmail.com", 587) #or port 465 doesn't seem to work!
server.ehlo()
server.starttls()
server.login(gmail_user, gmail_pwd)
server.sendmail(FROM, TO, message)
#server.quit()
server.close()
print 'successfully sent the mail'
except:
print "failed to send mail"
这似乎不是一个关于发送电子邮件的问题,而是如何将它们组织到GMail将正确处理它们
有关线程如何工作的说明,请参见。基本上,你需要在随后的邮件中在主题行的开头加上“Re:”。因为您没有显示生成消息的代码,所以我无法说明您可能如何做到这一点。这是一个老问题,但我觉得必须回答它,因为有一种方法可以实现OP想要的。 您可以通过在邮件中添加标题来实现,并在发送另一封电子邮件时引用标题。比如说
from email.utils import make_msgid
my_id = make_msgid()
#Build your email as you normally do, and add ID as a message header
message = MIMEMultipart()
message["Message-ID"] = my_id
message["Subject"] = "test"
message["From"] = from_email
# ...etc and send your email using smtp.sendmail
# On the reply (or when sending another email), add the following headers
message["In-Reply-To"] = my_id
message["References"] = my_id
# ...send your email using smtp.sendmail
当您检查邮件客户端时,您将看到后一封电子邮件将作为对前一封电子邮件的回复发布,从而创建您通常在流行电子邮件客户端(Gmail、收件箱、Outlook、Yahoo等)中看到的线程。哦!好啊我删除了将变量“message”定义为message=“”\From:%s\nTo:%s\n对象:%s\n\n%s”““%”的原始函数的一部分(From、“,”。join(TO)、SUBJECT、TEXT)。这是原始代码。我觉得没用。谢谢你的帮助。我已经用同一个主题做了一些测试,它成功了;-)