全部產品
Search
文件中心

Direct Mail:關於Message-ID的入信校正

更新時間:Aug 27, 2025

說明

新註冊使用者Message-ID不符合規則將被退信,現有使用者不受影響。

一、什麼是Message-ID

Message-ID是一個唯一的標識,用於在郵件系統中區分不同的郵件。

二、Message-ID的文法規則

我們給出一個規範Message-ID的子集:

  • Message-ID首尾分別是<和>

  • @符號的左邊和右邊的字串是由零個或多個 . 分割的非空子字串組成

  • 非Null 字元串裡只能存在可列印的ASCII字元

RFC-5322規範樣本:

<d52ce63e-a0d5-4f95-b6a9-e1256a44f5fb@example.net>

<5ef31701.1c631ghz1.13943.bu15@example.net>

校正的該規則的Regex為:

<[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的Regex模式
    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)