Python 通过smtplib发送邮件会浪费时间
我想使用smtplib的cron作业每天发送一次状态邮件 发送邮件效果很好,但是发送时间和日期似乎总是我阅读邮件时的时间和日期,而不是邮件发送时的时间和日期。这可能是6小时后 我还没有找到关于向smtplib提供发送时间以及消息数据的提示。我是否缺少任何东西,或者这是邮件服务器配置的问题?但是,通过Thunderbird提交的其他邮件对此帐户没有显示这种效果 我的python程序(已删除登录数据)如下所示:Python 通过smtplib发送邮件会浪费时间,python,smtplib,Python,Smtplib,我想使用smtplib的cron作业每天发送一次状态邮件 发送邮件效果很好,但是发送时间和日期似乎总是我阅读邮件时的时间和日期,而不是邮件发送时的时间和日期。这可能是6小时后 我还没有找到关于向smtplib提供发送时间以及消息数据的提示。我是否缺少任何东西,或者这是邮件服务器配置的问题?但是,通过Thunderbird提交的其他邮件对此帐户没有显示这种效果 我的python程序(已删除登录数据)如下所示: import smtplib sender = 'abc@def.com' recei
import smtplib
sender = 'abc@def.com'
receivers = ['z@def.com']
message = """From: Sender <abc@def.com>
To: Receiver<z@def.com>
Subject: Testmail
Hello World.
"""
try:
smtpObj = smtplib.SMTP('mailprovider.mailprovider.com')
smtpObj.sendmail(sender, receivers, message)
print "Successfully sent email"
except SMTPException:
print "Error: unable to send email"
您可能需要在邮件的标题中指定更多信息。尝试使用来构建您的邮件,而不是自己组装文本。也许这很愚蠢,但您在服务器上有正确的日期和时间吗?在邮件中添加明确的日期字段成功了,感谢Serge Ballesta的想法:
import smtplib
from email.utils import formatdate
from email.mime.text import MIMEText
sender = ..
receiver = ..
message = "Hello World"
msg = MIMEText(message)
msg['Subject'] = 'Testmessage'
msg['From'] = sender
msg['To'] = receiver
msg["Date"] = formatdate(localtime=True)
try:
s = smtplib.SMTP(..)
s.sendmail(sender, receiver, msg.as_string())
s.quit()
print "Successfully sent email"
except SMTPException:
print "Error: unable to send email"
谢谢你的建议。我用过电子邮件,cf修改了上面的代码,但没有效果。我在电子邮件中找不到可以设置的时间属性。是的,我知道,但我没有足够的声誉;(是的,设置了正确的时间,我尝试从多台计算机发送。确实很奇怪,
Date
字段通常由smtp服务器添加(mailprovider.mailprovider.com
)当它收到一封不包含邮件的邮件时,这应该发生在此处。请显示收到邮件的完整邮件头,以便我们了解SMTP协议级别上发生的情况。@Serge Ballesta:谢谢您的提示,与从该服务器收到的其他邮件不同,我收到的邮件没有附加日期字段。
import smtplib
from email.utils import formatdate
from email.mime.text import MIMEText
sender = ..
receiver = ..
message = "Hello World"
msg = MIMEText(message)
msg['Subject'] = 'Testmessage'
msg['From'] = sender
msg['To'] = receiver
msg["Date"] = formatdate(localtime=True)
try:
s = smtplib.SMTP(..)
s.sendmail(sender, receiver, msg.as_string())
s.quit()
print "Successfully sent email"
except SMTPException:
print "Error: unable to send email"