структура выборки imap: как отличить встроенные изображения от вложений?


Я работаю над сценарием, который анализирует входящие сообщения электронной почты. Как определить, является ли часть сообщения вложением или встроенными изображениями? Этот образец письма был отправлен пользователем, который сообщил мне, что его клиенты внедрили изображения, но disposition="Вложение" выглядит как прикрепленное изображение, я видел, что AppleMail использует "встроенное", что кажется более правдоподобным...

Я также проверил текст msg, чтобы увидеть, ссылается ли он на прикрепленный файл, но в этом примере также нет ссылок на файлы - и все же пользователь настаивает на том, что они были встроены, а не прикреплены.

Структура сообщения:

object(stdClass)#218 (12) {
  ["type"]=>
  int(1)
  ["encoding"]=>
  int(0)
  ["ifsubtype"]=>
  int(1)
  ["subtype"]=>
  string(5) "MIXED"
  ["ifdescription"]=>
  int(0)
  ["ifid"]=>
  int(0)
  ["bytes"]=>
  int(262312)
  ["ifdisposition"]=>
  int(0)
  ["ifdparameters"]=>
  int(0)
  ["ifparameters"]=>
  int(1)
  ["parameters"]=>
  array(1) {
    [0]=>
    object(stdClass)#219 (2) {
      ["attribute"]=>
      string(8) "BOUNDARY"
      ["value"]=>
      string(37) "----_=_NextPart_001_01CE168A.AE40BD2E"
    }
  }
  ["parts"]=>
  array(5) {
    [0]=>
    object(stdClass)#220 (12) {
      ["type"]=>
      int(1)
      ["encoding"]=>
      int(0)
      ["ifsubtype"]=>
      int(1)
      ["subtype"]=>
      string(11) "ALTERNATIVE"
      ["ifdescription"]=>
      int(0)
      ["ifid"]=>
      int(0)
      ["bytes"]=>
      int(4237)
      ["ifdisposition"]=>
      int(0)
      ["ifdparameters"]=>
      int(0)
      ["ifparameters"]=>
      int(1)
      ["parameters"]=>
      array(1) {
        [0]=>
        object(stdClass)#221 (2) {
          ["attribute"]=>
          string(8) "BOUNDARY"
          ["value"]=>
          string(37) "----_=_NextPart_002_01CE168A.AE40BD2E"
        }
      }
      ["parts"]=>
      array(2) {
        [0]=>
        object(stdClass)#222 (12) {
          ["type"]=>
          int(0)
          ["encoding"]=>
          int(4)
          ["ifsubtype"]=>
          int(1)
          ["subtype"]=>
          string(5) "PLAIN"
          ["ifdescription"]=>
          int(0)
          ["ifid"]=>
          int(0)
          ["lines"]=>
          int(21)
          ["bytes"]=>
          int(204)
          ["ifdisposition"]=>
          int(0)
          ["ifdparameters"]=>
          int(0)
          ["ifparameters"]=>
          int(1)
          ["parameters"]=>
          array(1) {
            [0]=>
            object(stdClass)#223 (2) {
              ["attribute"]=>
              string(7) "CHARSET"
              ["value"]=>
              string(10) "iso-8859-1"
            }
          }
        }
        [1]=>
        object(stdClass)#224 (12) {
          ["type"]=>
          int(0)
          ["encoding"]=>
          int(4)
          ["ifsubtype"]=>
          int(1)
          ["subtype"]=>
          string(4) "HTML"
          ["ifdescription"]=>
          int(0)
          ["ifid"]=>
          int(0)
          ["lines"]=>
          int(97)
          ["bytes"]=>
          int(3709)
          ["ifdisposition"]=>
          int(0)
          ["ifdparameters"]=>
          int(0)
          ["ifparameters"]=>
          int(1)
          ["parameters"]=>
          array(1) {
            [0]=>
            object(stdClass)#225 (2) {
              ["attribute"]=>
              string(7) "CHARSET"
              ["value"]=>
              string(10) "iso-8859-1"
            }
          }
        }
      }
    }
    [1]=>
    object(stdClass)#226 (14) {
      ["type"]=>
      int(5)
      ["encoding"]=>
      int(3)
      ["ifsubtype"]=>
      int(1)
      ["subtype"]=>
      string(3) "BMP"
      ["ifdescription"]=>
      int(1)
      ["description"]=>
      string(7) "bmp.bmp"
      ["ifid"]=>
      int(0)
      ["bytes"]=>
      int(191348)
      ["ifdisposition"]=>
      int(1)
      ["disposition"]=>
      string(10) "ATTACHMENT"
      ["ifdparameters"]=>
      int(1)
      ["dparameters"]=>
      array(1) {
        [0]=>
        object(stdClass)#227 (2) {
          ["attribute"]=>
          string(8) "FILENAME"
          ["value"]=>
          string(7) "bmp.bmp"
        }
      }
      ["ifparameters"]=>
      int(1)
      ["parameters"]=>
      array(1) {
        [0]=>
        object(stdClass)#228 (2) {
          ["attribute"]=>
          string(4) "NAME"
          ["value"]=>
          string(7) "bmp.bmp"
        }
      }
    }
    [2]=>
    object(stdClass)#229 (14) {
      ["type"]=>
      int(5)
      ["encoding"]=>
      int(3)
      ["ifsubtype"]=>
      int(1)
      ["subtype"]=>
      string(3) "GIF"
      ["ifdescription"]=>
      int(1)
      ["description"]=>
      string(7) "gif.gif"
      ["ifid"]=>
      int(0)
      ["bytes"]=>
      int(12178)
      ["ifdisposition"]=>
      int(1)
      ["disposition"]=>
      string(10) "ATTACHMENT"
      ["ifdparameters"]=>
      int(1)
      ["dparameters"]=>
      array(1) {
        [0]=>
        object(stdClass)#230 (2) {
          ["attribute"]=>
          string(8) "FILENAME"
          ["value"]=>
          string(7) "gif.gif"
        }
      }
      ["ifparameters"]=>
      int(1)
      ["parameters"]=>
      array(1) {
        [0]=>
        object(stdClass)#231 (2) {
          ["attribute"]=>
          string(4) "NAME"
          ["value"]=>
          string(7) "gif.gif"
        }
      }
    }
    [3]=>
    object(stdClass)#232 (14) {
      ["type"]=>
      int(5)
      ["encoding"]=>
      int(3)
      ["ifsubtype"]=>
      int(1)
      ["subtype"]=>
      string(4) "JPEG"
      ["ifdescription"]=>
      int(1)
      ["description"]=>
      string(7) "jpg.jpg"
      ["ifid"]=>
      int(0)
      ["bytes"]=>
      int(25642)
      ["ifdisposition"]=>
      int(1)
      ["disposition"]=>
      string(10) "ATTACHMENT"
      ["ifdparameters"]=>
      int(1)
      ["dparameters"]=>
      array(1) {
        [0]=>
        object(stdClass)#233 (2) {
          ["attribute"]=>
          string(8) "FILENAME"
          ["value"]=>
          string(7) "jpg.jpg"
        }
      }
      ["ifparameters"]=>
      int(1)
      ["parameters"]=>
      array(1) {
        [0]=>
        object(stdClass)#234 (2) {
          ["attribute"]=>
          string(4) "NAME"
          ["value"]=>
          string(7) "jpg.jpg"
        }
      }
    }
    [4]=>
    object(stdClass)#235 (14) {
      ["type"]=>
      int(3)
      ["encoding"]=>
      int(3)
      ["ifsubtype"]=>
      int(1)
      ["subtype"]=>
      string(12) "OCTET-STREAM"
      ["ifdescription"]=>
      int(1)
      ["description"]=>
      string(7) "pdf.pdf"
      ["ifid"]=>
      int(0)
      ["bytes"]=>
      int(27834)
      ["ifdisposition"]=>
      int(1)
      ["disposition"]=>
      string(10) "ATTACHMENT"
      ["ifdparameters"]=>
      int(1)
      ["dparameters"]=>
      array(1) {
        [0]=>
        object(stdClass)#236 (2) {
          ["attribute"]=>
          string(8) "FILENAME"
          ["value"]=>
          string(7) "pdf.pdf"
        }
      }
      ["ifparameters"]=>
      int(1)
      ["parameters"]=>
      array(1) {
        [0]=>
        object(stdClass)#237 (2) {
          ["attribute"]=>
          string(4) "NAME"
          ["value"]=>
          string(7) "pdf.pdf"
        }
      }
    }
  }
}
 2
Author: MBaas, 2013-03-10

2 answers

Лучший способ проверить, встроено ли изображение с помощью [ifid]. Я проверил различные почтовые приложения. Они по-разному обрабатывают встроенные вложения. Почта Zoho помечает

[расположение] =>встроенный

Живые почтовые метки

[расположение] =>вложение

Оба они устанавливают

[ифид] => 1 [id] =>

[идентификатор] =>

Если [ifid] => 1, то это встроенное изображение, а [id] будет идентификатором cid изображения. скачать встроенное вложение и замените

Src="код cid:0.28876465441.6812139177583476518.150d8a30c19__встроенный__img__src"

С загруженным путем

 2
Author: Harish NInge Gowda, 2015-11-05 17:48:26

Внедренные изображения будут вторыми и последующими дочерними элементами части тела MIME типа "составной/связанный". Прикрепленные изображения будут дочерними элементами части тела MIME типа "составная/смешанная".

 1
Author: Celada, 2013-03-10 19:59:54