2016-04-25 14 views
1

smtplibを使用してcronジョブを使用して1日に1回ステータスメールを送信したいとします。smtplib経由でメールを送信すると時間が失われる

メールの送信はうまくいきますが、メールを送信すると送信日時が常に日時のように見えますが、メールが送信されるときは表示されません。これは6時間後になる可能性があります。

メッセージデータと共にsmtplibへの送信時間に関するヒントが見つかりませんでした。何か不足しているのですか、これはメールサーバーの設定に問題がありますか?しかし、Thunderbird経由で手渡された他のメールは、このアカウントでこの効果を表示しません。 (ログインデータを削除して)

私のPythonプログラム下にリストされている:

import smtplib 

sender = '[email protected]' 
receivers = ['[email protected]'] 

message = """From: Sender <[email protected]> 
To: Receiver<[email protected]> 
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" 

[EDIT]

示唆したが、それでも私の受信トレイに示す時が読んでいるとして電子メールパッケージを使用してコード時間は送信しません。

import smtplib 
from email.mime.text import MIMEText 

sender = .. 
receiver = .. 

message = "Hello World" 
msg = MIMEText(message) 
msg['Subject'] = 'Testmessage' 
msg['From'] = sender 
msg['To'] = receiver 

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" 
+1

を確かに奇妙な... 'Date'フィールドは通常、'(SMTPサーバーによって追加されますmailprovider.mailprovider.com')が含まれていないメッセージを受信したときに発生します。受信したメッセージの完全なヘッダーを表示して、SMTPプロトコルレベルで何が起こるかを理解してください。 –

+0

@ Serge Ballesta:そのヒント、そのサーバーから受信した他のメッセージとは異なり、ありがとうございます。受信したメッセージに日付フィールドは添付されていません。 – tfv

答えて

1

メッセージのヘッダーに詳細を指定する必要がある場合があります。 email moduleを使用して、テキストを自分で組み立てる代わりにメッセージを作成してみてください。

+0

あなたの提案をありがとう。私は電子メールを使用していますが、上記のコードは修正されていますが、効果はありません。私は設定できる電子メールの時間属性を見つけられませんでした。 – tfv

0

おそらく、それはばかげていますが、サーバーに正しい日時がありますか?メッセージに明示的な日付フィールドを追加する

+0

コメントとしてもっとよく合います... –

+0

はい、私は知っていますが、評判が十分ではありません;( – Jone

+0

はい、正しい時刻が設定されていて、複数のコンピュータから送信しようとしました。 – tfv

2

はトリックをした、という考えのためセルジュ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" 
関連する問題