парсинг необработанной электронной почты в php

Если эта ошибка произошла, когда вы размещаете веб-сайт, убедитесь, что вы установили правильную версию PHP (тот, который использует ваш CI).

28
задан pcurry 7 June 2013 в 14:50
поделиться

4 ответа

С чем Вы надеетесь закончить в конце? Тело, предмет, отправитель, вложение? Вы должны провести некоторое время с RFC2822 для понимания формата почты, но здесь являетесь самыми простыми правилами для хорошо сформированной электронной почты:

HEADERS\n
\n
BODY

таким образом, первая пустая строка (двойная новая строка) является разделителем между ЗАГОЛОВКАМИ и ТЕЛОМ. ЗАГОЛОВОК Похож на это:

HSTRING:HTEXT

HSTRING всегда запускается в начале строки и не содержит пробела или двоеточий. HTEXT может содержать большое разнообразие текста, включая новые строки, пока символ новой строки сопровождается пробелом.

"ТЕЛО" является действительно просто любыми данными, которые следуют за первой двойной новой строкой. (Существуют различные правила, если Вы передаете почту через SMTP, но обрабатываете его по каналу, Вы не должны волноваться об этом).

Так, в действительно простом, приблизительно условия 1982 RFC822 , электронное письмо похоже на это:

HEADER: HEADER TEXT
HEADER: MORE HEADER TEXT
  INCLUDING A LINE CONTINUATION
HEADER: LAST HEADER

THIS IS ANY
ARBITRARY DATA
(FOR THE MOST PART)

самая современная электронная почта более сложна, чем это все же. Заголовки могут быть закодированы для наборов символов или слова пантомимы RFC2047 или тонна другого материала, о котором я не думаю прямо сейчас. Тела действительно тверды к коду самокрутки в течение этих дней к тому, если Вы хотите, чтобы они были значимы. Почти вся электронная почта, это сгенерировано MUA, будет закодированный MIME. Это могло бы быть кодируемым программой uuencode текстом, это мог бы быть HTML, это могла бы быть кодируемая программой uuencode электронная таблица Excel.

я надеюсь, что это помогает служить основой для понимания некоторых очень элементных блоков электронной почты. При обеспечении большего количества фона на том, что Вы пытаетесь сделать с данными I (или кто-то еще) мог бы быть в состоянии обеспечить лучшее направление.

21
ответ дан jj33 28 November 2019 в 03:08
поделиться

Вы, вероятно, не собираетесь иметь много забавы, пишущий Ваш собственный синтаксический анализатор MIME. Причина Вы находите "чрезмерно развитые почтовые пакеты обработки", состоит в том, потому что MIME является действительно сложным набором правил/форматов/кодировки. Части MIME могут быть рекурсивными, который является частью забавы. Я думаю, что Ваш лучший выбор состоит в том, чтобы записать лучший обработчик MIME Вы, проанализировать сообщение, может выбросить все, что это не текст/плоскость или текст/HTML, и затем вынудите команду во входящей строке быть снабженной префиксом КОМАНДУ: или что-то подобное так, чтобы можно было найти его в навозе. Если Вы запускаете с правил как этот, у Вас есть достойный шанс обработки новых поставщиков, но необходимо быть готовы настроить, если новый поставщик приезжает (или heck, если текущий поставщик принимает решение изменить их архитектуру обмена сообщениями).

1
ответ дан jj33 28 November 2019 в 03:08
поделиться

Я не уверен, поможет ли это Вам - надежде так - но это, конечно, поможет другим, заинтересованным обнаружением больше об электронной почте. Marcus Bointon сделал одно из лучших представлений, наделенных правом "Почта () и жизнь после Почты ()" на лондонской конференции PHP в марте в этом году и слайды и , MP3 онлайн. Он говорит с некоторыми полномочиями, работая экстенсивно с электронной почтой и PHP на глубоком уровне.

Мое восприятие состоит в том, что Вы находитесь в для мира боли, пытающейся записать действительно универсальный синтаксический анализатор.

РЕДАКТИРОВАНИЕ - файлы, кажется, были удалены на лондонском сайте PHP; найденный слайдами на Marcus собственный сайт : Часть 2 Части 1 не Могла видеть MP3 нигде хотя

1
ответ дан Polsonby 28 November 2019 в 03:08
поделиться

да, я был в состоянии записать основной синтаксический анализатор, базирующийся от этого rfc и некоторые другие основные учебные руководства. но это - вложенные границы многослойной пантомимы, которые продолжают портить меня.

я узнал, что MMS (не SMS) сообщения, отправленные от моего телефона, являются просто стандартными электронными письмами, таким образом, у меня есть система, которая читает входящую электронную почту, проверяет от (чтобы только позволить с моего телефона) и использует часть тела для выполнения различных команд на моем сервере. его вид подобных дистанционное управление по электронной почте.

, потому что система разработана для отправки изображений, его полученный набор по-другому закодированных частей. часть mms.smil.txt, текст/плоскость (то, которое бесполезно, просто говорит 'это, является сообщением HTML'), application/smil часть (который часть, которая телефоны были бы рис. на), текст/HTML расстаются с рекламой для моего поставщика услуг, тогда моим сообщением, но все перенеслись в HTML, тогда наконец вложение текстового файла с моим сообщением открытым текстом (который является использованием первой части) (если я пихаю изображение как вложение в сообщении, его помещенном во вложение 1, base64 закодированный, тогда моя текстовая часть присоединяется как вложение 2)

у меня был он работающий с точным почтовым форматом от моего поставщика услуг, но когда я выполнил сообщение от кого-то телефон elses через него, это перестало работать в целом наборе скудных путей.

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

моя конечная цель должна была бы иметь функцию, что я мог подать сырые данные переданная по каналу почта в и возвратить большой массив с ассоциативными подмассивами заголовков var:val пары, и один для основного текста в целом представляют в виде строки

, чем все больше я ищу на этом, тем больше я нахожу то же самое: гигант чрезмерно развил почтовые пакеты обработки, которые делают все под солнцем, это связано с письмами или бесполезное (мне, в этом проекте) учебные руководства.

я думаю, что оказываюсь перед необходимостью стиснуть зубы и просто тщательно записать что-то мой сам.

0
ответ дан Uberfuzzy 28 November 2019 в 03:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: