Ошибка не выдается php, поэтому, вероятно, @ не работает. см. Ниже!
в источнике php вы найдете функцию imap_fetchstructure()
в ext / imap / php_imap.c, которая является оболочкой для mail_fetchstructure_full()
, которая является частью библиотеки c-client.
В этой библиотеке, в c-client / rfc822.c, есть интересный отрывок:
case 'C': /* possible cc: or Content-<mumble>*/
if (!strcmp (tmp+1,"C")) rfc822_parse_adrlist (&env->cc,d,host);
else if ((tmp[1] == 'O') && (tmp[2] == 'N') && (tmp[3] == 'T') &&
(tmp[4] == 'E') && (tmp[5] == 'N') && (tmp[6] == 'T') &&
(tmp[7] == '-') && body)
switch (MIMEp) {
case -1: /* unknown if MIME or not */
if (!(MIMEp = /* see if MIME-Version header exists */
search ((unsigned char *) s-1,i,
(unsigned char *)"\012MIME-Version",(long) 13))) {
#if 1
/* This is a disgusting kludge, and most of the messages which
* benefit from it are spam.
*/
if (!strcmp (tmp+8,"TRANSFER-ENCODING") ||
(!strcmp (tmp+8,"TYPE") && strchr (d,'/'))) {
MM_LOG ("Warning: MIME header encountered in non-MIME message",
PARSE);
MIMEp = 1; /* declare MIME now */
}
else
#endif
Это единственное место, генерирующее вашу ошибку, согласно grep
. Так что это объясняет большинство загадок, которые я думаю.
Итак, у вас есть сообщение со строкой CONTENT-TRANSFER-ENCODING или CONTENT-TYPE, без заголовка MIME-Version.
edit MM_LOG определяется для mm_log, который, в свою очередь, является функцией, предоставляемой php / ext / imap / php_imap.c. Ошибки из imap_fetchstructure () заносятся в список ошибок (они не выводятся напрямую!), Которые вы можете запросить и пустые , используя imap_errors()
. Затем при отключении ресурса ошибки не отображаются, поскольку список ошибок пуст.