MIME 消息发件人以如下格式显示:
"John Doe" <johndoe@gmail.com>
<johndoe@gmail.com>
我试图弄清楚如何在上述示例中提取字符串“johndoe@gmail.com”,尽管我还需要“johndoe”和“gmail.com”部分(根据 RFC,我很确定要拆分@
就是这里所需要的)。显然,对我自己的解析器进行正则表达式是一种(不是很好)的选择。
似乎这可能使用javax.mail.internet.MimeMessage
. 所有的构造函数都需要一个Folder
我没有的(嗯,我有点做,它存在于 IMAP 层中),例如
MimeMessage(Folder folder, InputStream is, int msgnum)
这让我觉得我用错了这个类。尽管如此,如果我以这种方式解析,我确实可以访问getFrom()
返回数组的方法,该数组Address
本身并没有为我提供使用方法。
使用 mime4j 很容易做到这一点:
case T_FIELD: // field means header
if(token.getName() == "from") {
// get raw string as above - unparsed
因此,使用 mime4j 或使用 java、javax 等实用程序应该可以从那里提取地址的“a@b.com”部分,但我还没有在 javax 或 mime4j 中找到负责这个的类.