说明
新注册用户Message-ID不符合规则将被退信,现有用户不受影响。
一、什么是Message-ID
Message-ID是一个唯一的标识,用于在邮件系统中区分不同的邮件。
二、Message-ID的语法规则
我们给出一个规范Message-ID的子集:
Message-ID首尾分别是<和>
@符号的左边和右边的字符串是由零个或多个 . 分割的非空子字符串组成
非空字符串里只能存在可打印的ASCII字符
RFC-5322规范示例:
<d52ce63e-a0d5-4f95-b6a9-e1256a44f5fb@example.net>
<5ef31701.1c631ghz1.13943.bu15@example.net>
校验的该规则的正则表达式为:
<[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*>
如需要在Message-ID中加入注释之类的需求,可自行参考RFC 5322,如:
(THIS IS A COMMENT 1)<test@example.net>(THIS is A COMMENT 2))
三、Message-ID的影响
1、一些邮件服务商比如Gmail要求收到的邮件Message-ID符合RFC 5322规范,否则可能会被退信或进入垃圾箱,因此建议发信时,优化Message-ID。
2、邮件通过SMTP程序,入信到阿里的邮件服务器,若Message-ID不符合上述规则,将入信失败,错误如下:
#Message-ID不合法:
564 The format of the message-id is incorrect.Please refer to RFC 5322 section 3.6.4
#注释嵌套太多:如:(outer(inner)(another comment))
565 The nested comment depth exceeds the server's support
Python示例:
# -*- coding: utf-8 -*-
import re
def find_message_ids(text_list):
# 定义一个用于匹配Message-ID的正则表达式模式
pattern = '''<[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*>'''
# 遍历列表中的每个文本
for text in text_list:
# 使用findall方法在文本中查找所有匹配的电子邮件地址
emails = re.findall(pattern, text)
# 打印符合规则的Message-ID
for email in emails:
print(f"符合规则: {email}")
# 测试文本列表,包含多个字符串
test_text = [
"<d52ce63e-a0d5-4f95-b6a9-e1256a44f5fb@example.net>",
"这是一个测试文本,Message-ID。",
"<5ef31701.1c631ghz1.13943.bu15@example.net>"
]
# 调用函数
find_message_ids(test_text)
文档内容是否对您有帮助?