Python 验证电子邮件地址的域

Python 验证电子邮件地址的域,python,regex,email,validation,email-address,Python,Regex,Email,Validation,Email Address,我正在编写一个Python脚本,它检查IMAP帐户的收件箱,读取这些电子邮件,并回复特定的电子邮件。但是,出于安全原因,我需要确保电子邮件的原始发件人来自特定域 我正在使用email库及其message\u from\u string函数阅读Python中的电子邮件: msg=email.message\u from\u字符串(数据[0][1]) 这使我可以通过msg['from']轻松访问发件人。经过一些测试,我发现它的格式通常是johndoe,但我认为它也可能是JohnDoe@example

我正在编写一个Python脚本,它检查IMAP帐户的收件箱,读取这些电子邮件,并回复特定的电子邮件。但是,出于安全原因,我需要确保电子邮件的原始发件人来自特定域

我正在使用
email
库及其
message\u from\u string
函数阅读Python中的电子邮件:

msg=email.message\u from\u字符串(数据[0][1])

这使我可以通过
msg['from']
轻松访问发件人。经过一些测试,我发现它的格式通常是
johndoe
,但我认为它也可能是
JohnDoe@example.com


正如我所说,我想确保发件人电子邮件的域是,比如说,
foobar.net
。验证这一点的最佳方法是什么?我是否应该使用正则表达式,这样无论邮件的格式是什么,
msg['from']
,我都可以取出电子邮件?或者我应该在
@
上进行字符串拆分,然后检查接下来的10个字符是否为
foobar.net
?完全是别的吗

您可以在简单域中尝试此模式:

模式

(?<=@)\w+(\.\w+?)+?(?=>)
输出

1. John Doe <JohnDoe@example.com.no>
2. John Doe <JohnDoe@foobar.net>
1. example.com.no
2. foobar.net
正如在评论中提到的,你可以使用某种
包含
的方法,然后我在谷歌上搜索了一下,如果你知道这个域,你可以使用类似这样的方法:

PYTHON代码

if "@foobar.net" in msg['from']: continue
此代码基于:


您可以在简单域中尝试此模式:

模式

(?<=@)\w+(\.\w+?)+?(?=>)
输出

1. John Doe <JohnDoe@example.com.no>
2. John Doe <JohnDoe@foobar.net>
1. example.com.no
2. foobar.net
正如在评论中提到的,你可以使用某种
包含
的方法,然后我在谷歌上搜索了一下,如果你知道这个域,你可以使用类似这样的方法:

PYTHON代码

if "@foobar.net" in msg['from']: continue
此代码基于:


我绝对建议使用正则表达式。 但是,您还应该注意,电子邮件中的“发件人”字段是由电子邮件客户端设置的,可以不费吹灰之力就进行欺骗。因此,您应该考虑是否也可以检查发送邮件服务器

干杯
亨德里克

我绝对推荐使用正则表达式。 但是,您还应该注意,电子邮件中的“发件人”字段是由电子邮件客户端设置的,可以不费吹灰之力就进行欺骗。因此,您应该考虑是否也可以检查发送邮件服务器

干杯 亨德里克

注: 如中所示,匹配电子邮件地址的正确正则表达式为:

(?:(?:\r\n)?[\t])*(?:(?:(?:[^()@;:\\”\[\]\000-\031]+(?:(?:(?:\r\n)?[\t]
)+|\Z |(?=[\[“()@,;:\\”\[\]]))124;“(?:[^\“\r\\]\\.\.\。。。(?:(?:\r\n)?[\t])*”(?:(?:)
\r\n)?[\t])*(?:\。(?:(?:\r\n)?[\t])*(?:[^()@;:\\”\[\]\000-\031]+(?:(?:)(
?:\r\n)?[\t])+\Z|(?=[\[“()@,;:\\”\[\]])))124;“(?:[^\“\r\\]\\\\.\。|(?:(?:\r\n)?[
\t] )*“(?:(?:(?:\r\n)?[\t])*)*@(?:(?:\r\n)?[\t])*(?:[^()@;:\\”\[\]\000-\0
31]+(?:(?:\r\n)?[\t])+\Z;(?=[\[“()@,;:\\”\[\]]))\[([^\[\]\r\\]\\\\\\\]\\\\.]*\
](?:(?:\r\n)?[\t])*(?:\。(?:(?:\r\n)?[\t])*(?:[^(),;:\”\[\]\000-\031]+
(?:(?:(?:\r\n)?[\t])+\Z;(?=[\[“()@,;:\\”\[\]]))\124\[([^\[\]\ r\\]\\\\\].*\])(?:
(?:\r\n)?[\t])*(?:[^()@,;:\\\”\[\]\000-\031]+(?:(?:(?:\r\n)?[\t])+\Z
|(?=[\[“()@,;:\\”\[\]])|“(?:[^\”\r\\]\\\.\.\124;(?:(?:\ r\n)?[\t])*”(?:(?::\r\n)
?[\t])*)*\(?:(?:\r\n)?[\t])*)|(?:[^()@;:\”\[\]\000-\031]+(?:(?)?
:(?:\r\n)?[\t])+\Z;(?=[\[“()@,;:\\”\[\]]))。“(?:[^\”\r\\]\\\\.\.\124;(?:(?::\ r\n)?
[\t])*“(?:(?:(?:\r\n)?[\t])*:(?:(?:\r\n)?[\t])*(?:(?:(?:[^()@;:\\”\[\]
\000-\031]+(?:(?:(?:\r\n)?[\t])+\Z;(?=[\[”()@;:\\“\[\]]))。“(?:[^\”\r\\]|
\\(?:(?:\r\n)?[\t])*(?:(?:\r\n)?[\t])*(?:\(?:(?:\r\n)?[\t])*(?:[^()
@,;:\“\[\]\000-\031]+(?:(?:(?:\r\n)?[\t])+\Z;(?=[\[“()@,;:\”))。”
(?:[^\”\r\\]\\。(?:(?:\r\n)?[\t])*“(?:(?:\r\n)?[\t])*)*@(?:(?:\r\n)?[\t]
)*(?:[^()@,;:\\”\[\]\000-\031]+(?:(?:(?:\r\n)?[\t])+\Z;(?=[\[”()@,;:\\
“\[\]])\\[([^\[\]\r\\]\\\].*\](?:(?:\r\n)?[\t])*(?:\(?:(?:\r\n)?[\t])*(?:。)?
:[^()@;:\\”\[\]\000-\031]+(?:(?:(?:\r\n)?[\t])+\124;\ Z;(?=[\[”),;:\”\[
\]]))|\[([^\[\]\r\\]\\\].*](?:(?:\r\n)?[\t])*)*(?:[^()@;:\”\[\]\000-
\031]+(?:(?:\r\n)?[\t])+\Z;(?=[\[“()@,;:\\\”\[\]]))。“(?:[^\\”\r\\\]\\\”|(
(?:(?:\r\n)?[\t])*“(?:(?:\r\n)?[\t])*\(?:(?:\r\n)?[\t])*)(?:,\s*(
?:(?:[^()@,;:\\”\[\]\000-\031]+(?:(?:\r\n)?[\t])+\Z;(?=[\[“()@,;:\\
“\[\]])\”(?:[^\”\r\\]\\\.(?:(?:\r\n)?[\t])*(?:(?:(?:\r\n)?[\t])*(?:\。(?:)(
(?:\r\n)?[\t])*(?:[^()@;:\\”\[\]\000-\031]+(?:(?:(?:\r\n)?[\t])+\Z;(?:)=[
\[“()@,;:\\\”\[\]])|“(?:[^\”\r\\]\\\.\124;(?:(?:\ r\n)?[\t])*”(?:(?:\r\n)?[\t
])*))*@(?:(?:\r\n)?[\t])*(?:[^()@;:\\”\[\]\000-\031]+(?:(?:(?:\r\n)?[\t
])+|\Z |(?=[\[“()@,;:\\\”\[\]]))\[([^\[\]\r\\]\\\\\].*](?:(?:\r\n)?[\t])*)(?
:\。(?:(?:\r\n)?[\t])*(?:[^()@;:\“\[\]\000-\031]+(?:(?:\r\n)?[\t])+|
\Z |(?=[\[“()@,;:\\”\[\]]))\[([^\[\]\r\\]\\\\].*](?:(?:\r\n)?[\t])*)*(?:
[^()@;:\\”\[\]\000-\031]+(?:(?:(?:\r\n)?[\t])+\124;\ Z;(?=[\[“()@;:\”)\[\
]]))|“(?:[^\”\r\\]\\.\。(?:(?:\r\n)?[\t])*”(?:(?:\r\n)?[\t])*)*\(?:(?:(?:\r\n)?[\t]):(
?:\r\n)?[\t])*)*)?;\s*)

注: 如中所示,匹配电子邮件地址的正确正则表达式为:

(?:(?:\r\n)?[\t])*(?:(?:(?:[^()@;:\\”\[\]\000-\031]+(?:(?:(?:\r\n)?[\t]
)+|\Z |(?=[\[“()@,;:\\”\[\]]))124;“(?:[^\“\r\\]\\.\.\。。。(?:(?:\r\n)?[\t])*”(?:(?:)
\r\n)?[\t])*(?:\。(?:(?:\r\n)?[\t])*(?:[^()@;:\\”\[\]\000-\031]+(?:(?:)(
?:\r\n)?[\t])+\Z|(?=[\[“()@,;:\\”\[\]])))124;“(?:[^\“\r\\]\\\\.\。|(?:(?:\r\n)?[
\t] )*“(?:(?:(?:\r\n)?[\t])*)*@(?:(?:\r\n)?[\t])*(?:[^()@;:\\”\[\]\000-\0
31]+(?:(?:\r\n)?[\t])+\Z;(?=[\[“()@,;:\\”\[\]]))\[([^\[\]\r\\]\\\\\\\]\\\\.]*\
](?:(?:\r\n)?[\t])*(?:\。(?:(?:\r\n)?[\t])*(?:[^(),;:\”\[\]\000-\031]+
(?:(?:(?:\r\n)?[\t])+\Z;(?=[\[“()@,;:\\”\[\]]))\124\[([^\[\]\ r\\]\\\\\].*\])(?:
(?:\r\n)?[\t])*(?:[^()@,;:\\\”\[\]\000-\031]+(?:(?:(?:\r\n)?[\t])+\Z
|(?=[\[“()@,;:\\”\[\]])|“(?:[^\”\r\\]\\\.\.\124;(?:(?:\ r\n)?[\t])*”(?:(?::\r\n)
?[\t])*)*\(?:(?:\r\n)?[\t])*)|(