2012-11-10 41 views

回答

3

我一直在使用這個表達式,它工作得很好。理論上可以設計一個發送者失敗這個正則表達式,這就是爲什麼我發現異常並警告地址。但它還沒有發生。

try: 
    sender = re.search('<?([^<>]+)>?$',mail.sender).group(1) 
except AttributeError: 
    ... 

對方回答是與正式電子郵件地址格式不兼容,按照RFC定義2822

通常,郵箱由兩個部分組成:(1)任選的顯示 名稱它指示可以向郵件的用戶顯示的接收者的姓名(可以是人 或系統),以及(2)用尖括號 (「<」和「>」)。 另外還有一個郵箱 的簡單形式,其中addr-spec地址單獨出現,沒有收件人的名稱或尖括號 。

請注意,這段代碼提到收件人,但如果您閱讀規範,它也適用於發件人。

http://tools.ietf.org/html/rfc2822#section-3.4

1

沒有一個正則表達式例如: -

s = "John Bolton <[email protected]>" 
email = ''.join([e for e in s.split() if '@' in e])[1:-1] 
+0

雖然也許比一個正則表達式更優雅,這不符合RFC 2822 – 2012-11-10 05:39:05

+0

兼容的,他並沒有要求RFC遵守AFAIK。這就是爲什麼我甚至不打擾重新。 –

相關問題