【问题标题】:square bracket characters in email address电子邮件地址中的方括号字符
【发布时间】:2012-09-19 02:21:43
【问题描述】:

当我们收到包含方括号的收件人InternetAddressesMimeMessage 时,当我们调用MimeMessage.getAllRecipients() 时,我们会得到“javax.mail.internet.AddressException: Local address contains illegal character in string”。

下面的电子邮件地址是我们遇到上述异常的一个示例:

"ABC NAME-DEM-SAST1" <ABCNAME-DEM-SAST1[001-SAST1@domain.com]>

上述示例地址是实际有效的电子邮件地址吗?如果是,为什么不能从中创建 InternetAddress?

例如InternetAddress add = new InternetAddress("\"ABC NAME-DEM-SAST1\" <ABCNAME-DEM-SAST1[001-SAST1@domain.com]>", false);

我查看了Javamail problem with ñ characters in mail addresses 问题以寻求答案,但无济于事。

我使用的是 javamail 1.4,JVM 运行在 Linux 主机系统上。

非常感谢您对此问题的任何见解!

问候, 下午。

【问题讨论】:

    标签: java special-characters jakarta-mail email-address square-bracket


    【解决方案1】:

    This explanation 表示“[”和“]”是电子邮件地址中的无效字符,除非用于绑定域文字(例如 [192.1.0.0])。 如果示例地址应显示名称和相应的地址,则正确的语法应为

    "ABC NAME-DEM-SAST1" <001-SAST1@domain.com>
    

    Microsoft Office 使用方括号来标记一次性地址 (http://msdn.microsoft.com/en-us/library/cc842281.aspx),但这似乎是非标准化的,也不符合给定的示例。

    The email address RFC.

    【讨论】:

    • 感谢 Pyranja 提供的信息。我们收到的带有这种格式的收件人地址的邮件都来自 Exchange 服务器/Outlook 客户端。为了成功处理这些非标准收件人地址格式,我将 Session 的属性“mail.mime.address.strict”设置为 false。我们处理的所有 SMTP 消息都直接来自邮件服务器而不是客户端,因此我们假设收件人地址已经被源邮件服务器检查过!我不知道这是否是最好的解决方案,但至少我们现在可以处理这些类型的收件人地址了。
    猜你喜欢
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 2018-10-21
    • 2017-10-10
    • 1970-01-01
    • 2012-12-12
    相关资源
    最近更新 更多