我试图过滤有附件的电子邮件,但在我使用的系统中,我只能访问标题(用于过滤)。 有一个一致的方式来确定电子邮件是否包含仅使用标题的附件? (也许检查内容types是多部分?)
如果只能访问标题,则无法实现所需的目标。 信息可能会作为一个非标准的标题,但这显然不是你可以依赖的东西。 要么进入身体,要么放弃这个想法。
没有附件的邮件可能是content-type:multipart,就像内容的文本和html版本。 你需要检查的是ct:multipart,然后是不是content-type:text / *的部分,但是你需要访问body 🙁
对于MIME附件,具有Content-Type: multipart/mixed电子邮件通常会有附件(但不一定)。 Content-Type:除multipart/*之外的电子邮件不会有附件。 任何其他( multipart/alternative最常见的)可能有附件。
无论如何,这取决于什么是依恋。 如果通过附件,你的意思是只有那些有attachment Content-Disposition MIME部分,那么你将不会在电子邮件头中find它,只能在相应的MIME头文件中find它。
你可能不想考虑作为附件的东西是电子邮件签名, multipart/related消息的一部分,例如embedded在HTML消息的签名中的图像。
我用下面的代码得到了邮件头:
msg_header = @imap.fetch(message_id, 'RFC822.HEADER').first.attr['RFC822.HEADER'] headers = msg_header.split(/\r\n|: /) email_header = headers[headers.index('Content-Type')+1].split(/;/)
那么你可以决定在这个邮件头附件或没有得到身体。
你可以从这里检查标题信息希望这可以帮助你。