我試圖在電子郵件中解析兼容的「From:」字段爲RFC 5322兩部分:顯示名稱和電子郵件地址,在Python 2.7中(顯示名稱可以是空的)。熟悉的例子就像解析Python中的電子郵件的「From:」字段
John Smith <[email protected]>
在上面,John Smith是顯示名稱,[email protected]是電子郵件地址。但下面也是一個有效的「發件人:」字段:
"unusual" <"very.(),:;<>[]\".VERY.\"[email protected]\\ \"very\".unusual"@strange.example.com>
在本例中,顯示的名稱,返回值是
"unusual"
和
"very.(),:;<>[]\".VERY.\"[email protected]\\ \"very\".unusual"@strange.example.com
是電子郵件地址。
您可以使用語法來解析Perl中的這些問題(如以下問題所述:Using a regular expression to validate an email address和The recognizing power of 「modern」 regexes),但我想在Python 2.7中執行此操作。我曾嘗試在Python中使用email.parser模塊,但該模塊似乎只能分離那些由冒號區分的字段。所以,如果你這樣做
from email.parser import Parser
headers = Parser().parsestr('From: "John Smith" <[email protected]>')
print headers['from']
它將返回
"John Smith" <[email protected]>
而如果你
print headers['display-name']
替換最後一行在上面的代碼將返回
None
我非常感謝提供任何建議和意見。
我建議讓它工作?在任何人可以提供更具體的幫助之前,您需要提供有關該問題的更多信息。 – alexis
謝謝。你是對的。我會盡力澄清。 – user765195
'headers ['display-name']'沒有意義。顯示名稱不是標題的字段,而是From:...標題中的第一個電子郵件地址。 –