說明
新注冊用戶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)
文檔內容是否對您有幫助?