簡體   English   中英

一條消息可以有多個發件人嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM