繁体   English   中英

MimeMessageParser无法从地址获取

[英]MimeMessageParser unable to fetch from address

我们已经在这个问题上停留了很长时间了。在我们的项目中,我们试图解析写入文件的电子邮件并将数据放入pojo。 它适用于大多数情况,但是当电子邮件ID太长时,电子邮件ID会转到下一行,由于未提取发件人地址,而是提取了名称。我们使用commons-email-1.4

包含emailmessage的输入文件具有

情况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());

abc.def@test.com ,它返回abc.def@test.com ,在case2中,它返回"defxacdhf, abc [CCC-OT]" 感谢您的帮助。

编辑脚本文件的读写方式如下。

while read line
        do
            echo "$line" >> /directory/$FILE_NAME
        done

如前所述:

这在使用的任何库中都不是错误,而是输入不符合RFC的错误。

引用RFC-822

3.1.1。 长头字段

  Each header field can be viewed as a single, logical line of ASCII characters, comprising a field-name and a field-body. For convenience, the field-body portion of this conceptual entity can be split into a multiple-line representation; this is called "folding". The general rule is that wherever there may be linear-white-space (NOT simply LWSP-chars), a CRLF immediately followed by AT LEAST one LWSP-char may instead be inserted. 

我不明白为什么您使用shell while循环读取数据而不是仅仅使用cat或类似的东西,但是问题在于您使用的是“ read”。 默认情况下,read将输入行拆分为多个字段,并由shell IFS环境变量指定的字段分隔符分隔。 前导字段分隔符将被忽略,因此当您读取以空白开头的行时,空白将被忽略。

将循环更改为:

    while IFS= read -r line
    do
        echo "$line" >> /directory/$FILE_NAME
    done

这会将IFS设置为每次读取前的空字符串,并指定“原始”读取,以使反斜杠字符不特殊。

但是,除非您在该读取循环中执行其他操作,否则要做的只是简单得多

    cat > /directory/$FILE_NAME

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM