2012-08-07 134 views
6

我想用Python的smtplib來設置電子郵件的優先級爲高。我已經成功地使用這個庫來發送電子郵件,但我不確定如何讓優先級工作。SMTP發送優先郵件

import smtplib 
from smtplib import SMTP 

我第一次嘗試使用這個從研究如何設置優先級:

smtp.sendmail(from_addr, to_addr, msg, priority ="high") 

不過,我得到了一個錯誤:keyword priority is not recognized.

我一直在使用也嘗試:

msg['X-MSMail-Priority'] = 'High' 

但是我得到另一個錯誤。有沒有什麼辦法只使用smtplib設置優先級?

+4

並使用它什麼是「另一個錯誤」到底是什麼?除此之外:你正在發明新的API調用。 sendmail()方法不會採用'priority'參數 - 爲什麼不檢查API文檔? sendmail()接受一個mail_options參數,它是一個參數列表..不要猜測API,查找它們。 – 2012-08-07 09:47:14

+0

我找不到指定mail_options參數的任何文檔!我已經嘗試失敗:smtp.sendmail(from_addr,to_addr,msg [,mail_options = [priority =「high」]]) – Sarah92 2012-08-07 10:18:11

+0

@SarahAddis [The docs](http://docs.python.org/library/smtplib .html#smtplib.SMTP.sendmail)明確聲明:「調用者可以傳遞一個ESMTP選項列表(例如8bitmime),用於MAIL FROM命令中作爲mail_options。ESMTP選項(例如DSN命令)應該與所有RCPT命令都可以作爲rcpt_options傳遞。「您必須在RFC查找ESMPT選項和RCPT選項。 – glglgl 2012-08-07 10:46:32

回答

15

優先級只是電子郵件內容(準確地說是標題內容)。請參閱here

接下來的問題是如何將它放入電子郵件。

這完全取決於您如何構建該電子郵件。如果您使用email模塊,你會做這種方式:

from email.Message import Message 
m = Message() 
m['From'] = 'me' 
m['To'] = 'you' 
m['X-Priority'] = '2' 
m['Subject'] = 'Urgent!' 
m.set_payload('Nothing.') 

,然後用

smtp.sendmail(from_addr, to_addr, m.as_string()) 
+0

發送郵件時如何打開「標誌」?我嘗試了上面的附加行「m ['Flag'] ='1'」。我沒有得到任何錯誤,但是旗幟也沒有出現。 – zingy 2015-10-15 10:25:39

+1

@zingy使用優先級2,它會給你的國旗 – Busturdust 2015-10-21 19:56:40

+0

@Busturdust優先'2'只出現感嘆號,但國旗未啓用。 – zingy 2015-10-26 09:24:32