关于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?
答案 0 :(得分:3)
我一直在使用这个正则表达式,它非常有效。从理论上讲,可能会设计一个未通过此正则表达式的发送方,这就是我捕获异常并提醒地址的原因。但它还没有发生。
try:
sender = re.search('<?([^<>]+)>?$',mail.sender).group(1)
except AttributeError:
...
另一个答案与官方电子邮件地址格式不兼容,如RFC 2822所定义。
通常,邮箱由两部分组成:(1)可选显示 名称,表示收件人的姓名(可以是某人) 或者系统)可以显示给邮件的用户 应用程序,以及(2)尖括号中的addr-spec地址 (“&lt;”和“&gt;”)。 还有另一种简单形式的邮箱 addr-spec地址单独出现的地方,没有收件人的地址 名称或尖括号。
请注意,此代码段提及收件人,但如果您阅读规范,它也适用于发件人。
答案 1 :(得分:1)
没有正则表达式,例如:
s = "John Bolton <john78@mail.com>"
email = ''.join([e for e in s.split() if '@' in e])[1:-1]