I found out the mailman will change Message-ID when sending email out. I just wonder if there is a way to keep the original Message-ID or assign a new one.
Set the AutoGenMessageId property = false (0).
The reason for the automatic Message-ID generation is because many SMTP servers will consider emails having the same Message-IDs as duplicates, and they are silently dropped. This causes confusion because the programmer cannot understand what happened to the email — everything seems to go perfectly without error, but the email is never delivered. Ensuring that each email has a unique message ID prevents this problem.
You may set your own Message-ID header field by (1) turn off AutoGenMessageId, and (2) call email.AddHeaderField("Message-ID","your-unique-message-id").