Kuc*_*chi 6 java email imap jakarta-mail
当我想查看谁使用JavaMail向我发送特定电子邮件时.
我可以用
Message.getFrom()
Run Code Online (Sandbox Code Playgroud)
返回一个
Message[]
Run Code Online (Sandbox Code Playgroud)
在什么情况下复活的消息可以来自多个身份?
关于API,这对于传出的电子邮件更有意义.
我真的可以,那:
Address from = message.getFrom()[0];
Run Code Online (Sandbox Code Playgroud)
总是给我回到消息发送的1个地址?
我现在实现了类似的东西:
Address[] fromAddress = message.getFrom();
if (fromAddress == null || fromAddress.length > 1) {
// Don't Process the Email and Notify me
}
Run Code Online (Sandbox Code Playgroud)
SMTP 的MAIL FROM命令仅允许 1 个地址,但From:标头(IMF 格式)不限于单个地址
RFC 5322,3.6.2。发件人字段:邮件的发件人字段由发件人字段组成, ... 发件人字段由字段名称“发件人”和一个或多个邮箱规范的逗号分隔列表组成。
sender(这是有效的,因为如果有多个s ,RFC 需要单个标头from)
是的,似乎Message.getFrom()真的可以返回多个地址.
我查看了Apache Geronimo实现JavaMail API的源代码,如果有多From:个头文件,或者一个头文件中有多个地址,它将返回多个地址.
至于是否会发生这种情况:
正如Alex K.的回答所解释的,如果只有一个"发件人",该标准允许多个"发件人"地址.我不知道是否有人真的发送带有多个"发件人"地址的邮件,但它符合标准.
在实践中实际发生的另一种情况:
一些垃圾邮件发送者显然发送带有多个From:标题的邮件 这不符合标准,但显然有些邮件服务器仍然接受邮件.这显然是为了过去按From:地址过滤的邮件过滤器.垃圾邮件发送者包含多个地址,希望如果找到一个带有"From"-address的标题,那么一个简单的过滤器会让邮件通过.
总而言之:是的,您应该期望Message.getFrom()返回多个地址(或根本不返回).但是,您可能不需要花费大量精力来处理这种情况.也许您甚至可以将其记录为错误 - 这取决于您的应用程序.
| 归档时间: |
|
| 查看次数: |
2819 次 |
| 最近记录: |