--047d7b33d6decd251504bfe78895 Content-Type: multipart/alternative; boundary=047d7b33d6decd250d04bfe78893 --047d7b33d6decd250d04bfe78893 Content-Type: text/plain; charset=UTF-8 twest ini sebuah proiduct abru awdawdawdawdwa aw awdawdaw --047d7b33d6decd250d04bfe78893 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <div class=3D"gmail_quote">twest=C2=A0<div><br></div><div>ini sebuah proidu= ct abru</div><div><br></div><div>awdawdawdawdwa</div><div><br></div><div>aw= </div><div>awdawdaw</div> </div><br> --047d7b33d6decd250d04bfe78893--
* heres фрагмент, что im в настоящее время делает это неправильно.
$parts = explode('--', $this->rawemail); $this->headers = imap_rfc822_parse_headers($this->rawemail); # var_dump($parts); # Process the parts foreach ($parts as $part) { # Get Content text/plain if (preg_match('/Content-Type: text\/plain;/', $part)) { $body_parts = preg_split('/\n\n/', $part); # If Above the newline (Headers) if ($body_parts[0]) { # var_dump($body_parts[0]); } # If Below the newline (Data) if ($body_parts[1]) { var_dump($body_parts[1]); } } # Get Content text/html if (preg_match('/Content-Type: text\/html;/', $part)) { $body_parts = preg_split('/\n\n/', $part); # If Above the newline (Headers) if ($body_parts[0]) { # var_dump($body_parts[0]); } # If Below the newline (Data) if ($body_parts[1]) { var_dump($body_parts[1]); } }
Я думаю, что вам лучше идти по линии электронной почты за раз, поскольку это разрывы строк, которые являются более критическими в формировании электронной почты.
Вашими правилами будут:
Что-то, что я помню давно, так что следующее не может быть на 100% точным, но я напомню на всякий случай. Будьте осторожны с файлами с attachemnts, поскольку вы можете получить два «пограничных» маркера. Но одна граница имеет другую границу, поэтому, если вы будете следовать правилам выше (т.е. захватите первую границу и придерживайтесь ее), тогда вы должны быть в порядке. Но проверьте свой скрипт с некоторыми attachemnts 🙂
Изменить: дополнительную информацию, заданную в вопросе. В электронном письме может быть столько «тел», сколько пользователь хочет кодировать. Вы можете иметь простой и HTML, кодированную версию UTF и версию RTF или даже версию Morse Code (если клиент знал, как обрабатывать «Content-Type Morse / Code»!). Иногда вы не получаете простой текст, а только версии HTML (непослушные пользователи). Иногда HTML фактически приходит без объявления типа контента (которое может отображаться или не отображаться как HTML, в зависимости от клиента). Граница также отделяет вложения. Богатый тест – это получение от Outlook (хотя, если быть справедливым, оно обычно преобразуется в HTML). Так что нет, есть где-то между 0 и X телами.