[英]Can a Message have multiple senders?
當我想使用 JavaMail 檢查誰向我發送特定電子郵件時。
我可以用
Message.getFrom()
它返回一個
Message[]
在什么情況下,一個復活的消息可以有多個它來自的身份?
關於API,這對於外發電子郵件更有意義。
所以我真的可以說:
Address from = message.getFrom()[0];
總是給我准確地返回消息發送的 1 個地址?
我現在已經實現了類似的東西:
Address[] fromAddress = message.getFrom();
if (fromAddress == null || fromAddress.length > 1) {
// Don't Process the Email and Notify me
}
是的,似乎Message.getFrom()
真的可以返回多個地址。
我查看了 Apache Geronimo 的 JavaMail API 實現的來源,如果有多個From:
標頭或一個標頭中有多個地址,它將返回多個地址。
至於會不會出現這種情況:
正如 Alex K. 的回答所解釋的那樣,如果只有一個“發件人”,則標准允許多個“發件人”地址。 我不知道是否有人真的發送帶有多個“發件人”地址的郵件,但它符合標准。
實踐中實際發生的另一種情況:
一些垃圾郵件發送者顯然會發送帶有多個From:
標頭的郵件。 這不符合標准,但顯然有些郵件服務器仍然接受郵件。 這樣做顯然是為了通過按From:
地址過濾的郵件過濾器。 垃圾郵件發送者包含多個地址,希望一個頭腦簡單的過濾器在找到一個帶有它喜歡的“發件人”地址的標頭時讓郵件通過。
所以總結一下:是的,您應該期望Message.getFrom()
返回多個地址(或根本沒有)。 但是,您可能不需要花費大量精力來處理這種情況。 也許您甚至可以通過將其記錄為錯誤來逃脫 - 這取決於您的應用程序。
SMTP 的MAIL FROM
命令只允許 1 個地址,但是From:
標頭(IMF 格式)不限於單個地址
RFC 5322, 3.6.2。 發起人字段:消息的發起者場從場組成的,...發件人域包含的字段名“從”和一個或多個郵箱規格逗號分隔的列表。
(這是有效的,因為如果 s 有多個from
則 RFC 需要一個單一的sender
標頭)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.