【发布时间】:2016-03-14 09:53:52
【问题描述】:
我们已经被这个问题困扰了很长一段时间了。在我们的项目中,我们试图解析写入文件的电子邮件并将数据放入 pojo。它适用于大多数情况,但是当电子邮件 ID 太长时,邮件 ID 会转到下一行,因此不会获取发件人地址,而是获取名称。我们使用的是 commons-email-1.4.
包含电子邮件的输入文件有
案例1:
From: "def, abc [CCC-OT]" <abc.def@test.com> //here it fetches the mail id properly
如果邮件ID较长,则文件具有
案例2:
From: "defxacdhf, abc [CCC-OT]"
<abc.defxacdhf@test.com>// here the mail id jumps to the next line so the from address fetched contains the name
这里是示例代码
ByteArrayInputStream byteArrayStream = new ByteArrayInputStream(FileUtils.getStreamAsByteArray(buffInStream,
lengthOfFile));
// MimeMessage message = new MimeMessage(mailSession, byteArrayStream);
MimeMessageParser mimeParser = new MimeMessageParser(MimeMessageUtils.createMimeMessage(mailSession,
byteArrayStream));
MimeMessageParser parsedMessage = mimeParser.parse();
当我们尝试获取发件人地址时
emailData.setFromAddress(parsedMessage.getFrom());
在 case1 中,它返回 abc.def@test.com,在 case2 中,它返回 "defxacdhf, abc [CCC-OT]"。感谢您提供任何帮助。
EDIT脚本文件的读写如下。
while read line
do
echo "$line" >> /directory/$FILE_NAME
done
【问题讨论】:
-
如果我没记错 RFC,在
-
@Jan 是的,"def, abc [CCC-OT]" 和
之间有空格在正常情况下,如果电子邮件 id 较长,则 id 会跳转到文件中的下一行。 -
在以
-
不,case2 下一行的开头没有空格。
-
然后库按照 rfc 工作。你从哪里得到的线?
标签: java email jakarta-mail apache-commons-email