gpt4 book ai didi

java - 编码 InternetAddress Personal 的正确方法

转载 作者:行者123 更新时间:2023-11-29 05:55:08 24 4
gpt4 key购买 nike

我需要通过java发送邮件,其中InternetAddress的个人(发件人姓名)可以是任意的UTF8字符串。由于我的电子邮件地址字符串可能包含或不包含个人信息,因此我仅使用 InternetAddress( String ) 构造函数来构建适当的 InternetAddress:

InternetAddress sender = new InternetAddress( "s\u00E8nder <from@example.org>" );
sender.setPersonal( sender.getPersonal(), Charsets.UTF_8.name() );

根据我的理解(因为测试似乎支持这一点)基本的 InternetAddress 构造函数不执行任何个人编码,所以我在一个额外的步骤中执行此操作,该步骤根据 MIME 对个人进行编码。

我的问题是如果这个过程在某些情况下可能会失败,javadoc 说如果解码失败,.getPersonal() 可能会返回原始数据。但这真的会发生吗?如果它失败会导致任何麻烦,因为 javadoc 告诉 setPersonal 仅当它包含非 ASCII 时才进行编码,但原始数据不会那样做,对吗?

最佳答案

您正在使用的构造函数假定地址字符串已经正确编码,就像您从电子邮件标题中读取它一样。您应该分别维护电子邮件地址和个人姓名字段,并使用将它们作为单独参数的构造函数。如果没有个人姓名,可以传null。

您可以通过 toUnicodeString 方法取回您正在使用的格式的字符串,但是无法解析这样的字符串。

关于java - 编码 InternetAddress Personal 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12475615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com