imap_fetchbody против Gmail API получить метод - PullRequest
0 голосов
/ 04 мая 2018

Формат возврата html imap_fetchbody против Gmail api Метод GET отличается.

Я записываю электронные письма в файл, а затем снова импортирую в Thunderbird. С imap_fetchbody письменные сообщения электронной почты загружаются в Thunderbird без проблем с заполнением, в то время как тот же адрес электронной почты, возвращаемый API , имеет проблему с заполнением.

Самое большое различие, которое я вижу, это 3D .

Вот несколько строк из imap_fetchbody:

<html lang=3Den><head><meta content=3D"date=3Dno" name=3D"format-detection"=
><meta content=3D"email=3Dno" name=3D"format-detection"><style>.awl a {colo=
r: #FFFFFF; text-decoration: none;}.abml a {color: #000000; font-family: Ro=
boto-Medium,Helvetica,Arial,sans-serif; font-weight: bold; text-decoration:=
 none;}.adgl a {color: rgba(0, 0, 0, 0.87); text-decoration: none;}.afal a =
{color: #b0b0b0; text-decoration: none;}@media screen and (min-width: 600px=
) {.v2sp {padding: 6px 30px 0px;} .v2rsp {padding: 0px 10px;}}</style></hea=
d>

И несколько строк из GMAIL api GET метода:

<html lang=en><head><meta content="date=no" name="format-detection"><meta 
 content="email=no" name="format-detection"><style>.awl a {color: #FFFFFF; 
 text-decoration: none;}.abml a {color: #000000; font-family: Roboto-
 Medium,Helvetica,Arial,sans-serif; font-weight: bold; text-decoration: 
 none;}.adgl a {color: rgba(0, 0, 0, 0.87); text-decoration: none;}.afal a 
 {color: #b0b0b0; text-decoration: none;}@media screen and (min-width: 
 600px) {.v2sp {padding: 6px 30px 0px;} .v2rsp {padding: 0px 10px;}}</style> 
 </head>`

Метод Gmail api GET возвращает base64 encode версию, которую я конвертирую следующим образом:

function decode($data)
{
    return base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT));
}

В чем действительно разница между обоими и почему на самом деле разница?

Снимок экрана с почтой, полученной через API Gmail

Снимок экрана с письмом, полученным через imap_fetchbody

Ваши комментарии и ответы будут оценены.

Спасибо

1 Ответ

0 голосов
/ 04 мая 2018

Разница между ними заключается в том, что imap_fetchbody возвращает:

Это текст для печати в кавычках, вероятно, результат прохождения через "тупой" почтовый клиент. = используется для кодирования / экранирования непечатаемых / метасимволов, очень похоже на & ...; используется в HTML. = 3d - это печатаемое в кавычках представление =: 3d hex = 61 ascii = знак равенства.

Ссылка: imap_fetchbody HTML со странными символами

Метод Gmail api GET возвращает строку base64_encoded, которая должна быть decoded. Мы можем добавить тот же quoted-printable эффект просто:

quoted_printable_encode($string)
...