InboundMailHandlerに関する質問。
class MailHandle(InboundMailHandler):
def receive(self, mail_message):
mail_message.sender may contained "John Bolton <john78@mail.com>". How can i extract "john78@mail.com" from it?
InboundMailHandlerに関する質問。
class MailHandle(InboundMailHandler):
def receive(self, mail_message):
mail_message.sender may contained "John Bolton <john78@mail.com>". How can i extract "john78@mail.com" from it?
私はこの正規表現を使用してきましたが、これは非常にうまく機能します。理論的には、この正規表現に失敗する送信者を設計することは可能かもしれません。そのため、例外をキャッチしてアドレスについて警告します。しかし、それはまだ起こっていません。
try:
sender = re.search('<?([^<>]+)>?$',mail.sender).group(1)
except AttributeError:
...
もう1つの回答は、RFC2822で定義されている公式の電子メールアドレス形式と互換性がありません。
通常、メールボックスは2つの部分で構成されます。(1)メールアプリケーションのユーザーに表示できる受信者(個人またはシステム)の名前を示すオプションの表示名と(2)山かっこ("<"および">")で囲まれたaddr-specアドレス。addr-specアドレスが受信者の名前や山かっこなしで単独で表示される、別の単純な形式のメールボックスもあります。
このスニペットは受信者に言及していることに注意してください。ただし、仕様を読むと、送信者にも適用されます。
正規表現なしで例:
s = "John Bolton <john78@mail.com>"
email = ''.join([e for e in s.split() if '@' in e])[1:-1]