2015-08-10 5 views
2

Я работаю над каким-то приложением, где я могу получать электронные письма из своего почтового ящика через работу cron, где я просто вставляю почту, почтовый объект и почтовое тело в базы данных MySQL.Лучший способ для хранения электронного письма в базе данных

Проблемы я имею с различными mailtypes как HTML письмо, текстовые письма, ..

Есть ли способ, чтобы получить только текст? Я пробовал с fetchbody и HTML entitites, printable_decode, но это приводит к иногда пустой вставке тела или ко всем специальным символам или иногда совершенным.

//$body = mysqli_real_escape_string($db, htmlentities(quoted_printable_decode(imap_fetchbody($stream,$email_id, 1.2)), ENT_QUOTES)); 
$body = mysqli_real_escape_string($db, quoted_printable_decode(imap_fetchbody($stream,$email_id, 1.2))); 
//$body = quoted_printable_decode(imap_fetchbody($stream,$email_id,2)); 
$bodyText = imap_fetchbody($stream,$email_id,1.2); 
if(!strlen($bodyText)>0){ 
    $bodyText = "<html><body>".imap_fetchbody($stream,$email_id,1)."</body></html>"; 
} 

Затем я попытался с полным HTML тела, но это создает проблемы с установкой в ​​моей базе данных, и если я убегаю строку, то HTML получает грязно. Я временно исправил его, получив полное тело HTML и записав его в .html-файл, но это не совсем вариант.

Причина, почему я хранить их в базу данных MySQL так что я могу назначить пользователь, цвет, .. в разные письма (что это не вариант с IMap почтой в Outlook, для отл.)

Моих конечный Идея состоит в том, чтобы сохранить электронные письма, точно так же, как это отображается в Outlook, а затем показывать их точно так же, как на странице .php, но это не всегда так просто.

Возможно, я решаю эту проблему совершенно неправильно, но, возможно, у вас, ребята, есть советы, идеи или что-то еще?

Спасибо заранее, Bert

ответ

1

Если сообщения отправляются правильно должна быть простой текст и HTML, но это идеальный мир.

Так что я предлагаю вам.

  1. Побег строки для MySQL
  2. Удалить потенциально опасность HTML-теги, как скрипт и т.д. с strip_tags

При показе пользователю

  1. данные из MySQL экранирования в
  2. Показать раздели данных ,

Вы также можете использовать парсер eml и сохранять eml-файлы в DB.

Проверил:

+0

Спасибо! Должен ли я использовать printable_decode или htmlentities? Но я посмотрю на этот парсер электронной почты, не думал о таких вещах, может быть, есть какие-то сторонние классы, которые будут обрабатывать такие письма. Я проверю это! –

+0

Это зависит от того, что вы сделали. Если вы хотите escape html, используйте htmlentities, но лучше разделите теги и покажите html. – Robert

Смежные вопросы