作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
当我想检查谁用 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:
header ,或者一个 header 中有多个地址,它将返回多个地址。
至于这是否会发生:
正如 Alex K. 的回答所解释的那样,如果只有一个“发件人”,则该标准允许使用多个“发件人”地址。我不知道是否真的有人发送具有多个“发件人”地址的邮件,但它符合标准。
实践中实际发生的另一种情况:
一些垃圾邮件发送者显然会发送带有多个 From:
header 的邮件。这不符合标准,但显然某些邮件服务器仍然接受邮件。这样做显然是为了绕过按 From:
地址过滤的邮件过滤器。垃圾邮件发送者包含多个地址,希望头脑简单的过滤器在找到一个带有它喜欢的“发件人”地址的 header 时让邮件通过。
总而言之:是的,您应该期望 Message.getFrom()
返回多个地址(或根本没有)。但是,您可能不需要花费大量精力来处理这种情况。也许您甚至可以将其记录为错误而逃脱 - 这取决于您的应用程序。
关于java - 一条消息可以有多个发件人吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21480430/
我是一名优秀的程序员,十分优秀!