Python 通过smtplib发送邮件会浪费时间

Python 通过smtplib发送邮件会浪费时间,python,smtplib,Python,Smtplib,我想使用smtplib的cron作业每天发送一次状态邮件 发送邮件效果很好,但是发送时间和日期似乎总是我阅读邮件时的时间和日期,而不是邮件发送时的时间和日期。这可能是6小时后 我还没有找到关于向smtplib提供发送时间以及消息数据的提示。我是否缺少任何东西,或者这是邮件服务器配置的问题?但是,通过Thunderbird提交的其他邮件对此帐户没有显示这种效果 我的python程序(已删除登录数据)如下所示: import smtplib sender = 'abc@def.com' recei

我想使用smtplib的cron作业每天发送一次状态邮件

发送邮件效果很好,但是发送时间和日期似乎总是我阅读邮件时的时间和日期,而不是邮件发送时的时间和日期。这可能是6小时后

我还没有找到关于向smtplib提供发送时间以及消息数据的提示。我是否缺少任何东西,或者这是邮件服务器配置的问题?但是,通过Thunderbird提交的其他邮件对此帐户没有显示这种效果

我的python程序(已删除登录数据)如下所示:

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"