Назад | Перейти на главную страницу

Могут ли заголовки электронного письма сказать вам, есть ли вложение?

Я пытаюсь фильтровать электронные письма с вложениями, но в системе, которую я использую, у меня есть доступ только к заголовкам (для фильтрации). Есть ли последовательный способ определения того, содержит ли электронное письмо вложения, используя только заголовки? (Возможно, проверка, является ли тип содержимого составным?)

Вы не сможете достичь желаемой цели, если у вас есть доступ только к заголовкам. Информация может быть там как нестандартный заголовок, но, очевидно, на это нельзя положиться. Либо получите доступ к телу, либо откажитесь от идеи.

Письма без вложений также могут быть типа содержимого: составные, как и сообщения с текстовыми и 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(/;/)

Затем вы можете выбрать заголовок этого письма, вложение или нет, без получения тела.

вы можете проверить информацию заголовка из Вот Надеюсь, это тебе поможет.