Я пытаюсь фильтровать электронные письма с вложениями, но в системе, которую я использую, у меня есть доступ только к заголовкам (для фильтрации). Есть ли последовательный способ определения того, содержит ли электронное письмо вложения, используя только заголовки? (Возможно, проверка, является ли тип содержимого составным?)
Вы не сможете достичь желаемой цели, если у вас есть доступ только к заголовкам. Информация может быть там как нестандартный заголовок, но, очевидно, на это нельзя положиться. Либо получите доступ к телу, либо откажитесь от идеи.
Письма без вложений также могут быть типа содержимого: составные, как и сообщения с текстовыми и html версиями содержимого. Вам нужно будет проверить c-t: multipart, а затем для частей, которые не являются content-type: text / *, но для этого вам понадобится доступ к телу :(
Для вложений Mime электронные письма с Content-Type: multipart/mixed
часто бывают вложения (но не обязательно). Письма с Content-Type:
Кроме как multipart/*
не было бы вложений. Что-нибудь еще (multipart/alternative
является наиболее распространенным) может иметь вложения.
В любом случае это зависит от того, что подразумевается под привязанностью. Если под вложением вы имеете в виду только те части пантомимы, у которых есть attachment
Content-Disposition
, то вы не найдете его в заголовке письма, только в соответствующих mime-заголовках.
Вещи, которые вы, возможно, не захотите рассматривать как вложения, - это, например, подписи электронной почты, части multipart/related
сообщение, которое, например, является изображениями, встроенными в подпись сообщения 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(/;/)
Затем вы можете выбрать заголовок этого письма, вложение или нет, без получения тела.
вы можете проверить информацию заголовка из Вот Надеюсь, это тебе поможет.