在我们的应用程序中,我们使用iMap从Gmail读取电子邮件并保存在数据库中,电子邮件中有两个附件(一个是pdf文件,另一个是数字签名文件)。 对于第一个文件 (pdf),我得到的处置为空并且无法处理附件,但对于第二个文件 (p7s),我获得了正确的处置值作为附件。
以下是附件的标题信息:
------=_NextPart_001_0025_01D03944.5B3A2140
Content-Type: application/pdf;
name="USXMS III Draft PUS - VOPR # 15-814.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="USXMS III Draft PUS - VOPR # 15-814.pdf"
------=_NextPart_000_0024_01D03944.5B3A2140
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
以下是处理电子邮件附件的相关代码:
//Process attchements of email
protected processAttachments(def workItem, def message) {
int attachmentCount = 0
def content = message.content
if (content instanceof Multipart) {
for (cntr in 0..(content.count - 1)) {
def bodyPart = content.getBodyPart(cntr)
def disposition = bodyPart.getDisposition()
println("Disposition is " + disposition + ".");// returns null for pdf
if (Part.ATTACHMENT.equalsIgnoreCase(disposition)) {
if (this.saveAttachments(workItem, bodyPart)) {
attachmentCount++
}
}
}
}
return attachmentCount
}
所以在上面的代码中,getDisposition为pdf文件返回null。如果您需要更多信息,请告诉我。
问题已解决,因为它是嵌套内容。如果处置为空,我必须遍历内容以查找附件。