Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Сеть > Получение писем pop3 / imap с сервера |
Автор: phpmasters 2.5.2013, 16:06 | ||||
Добрый день, профессионалы! Весь инет облазил!!! Делаю получение писем pop3 с сервера, а именно нужно подключиться, узнать сколько писем, вытащить все что есть из первого письма, это переменная $answer, включая прикрепленные файлы и правильность перекодирования заголовков письма и самого cодержания (тела) письма. Задача полностью разобрать письмо и вывести эти части на экран в браузере. Нужно сделать помимо того, что есть еще: - Перекодировку Темы письма - Найти и перекодировать Содержание (Тело) письма - Найти и сохранить прикрепленные файлы письма - Подключение к Imap c SSL / TLS - Возможно, что-то еще вывести ... Вот код, с рабочим примером
В БРАУЗЕРЕ ВЫГЛЯДИТ ТАК
Архив рабочего кода Получение писем pop3 с сервера здесь http://iaa.besaba.com/pop3.rar Если у Вас есть лучшее или готовое решение данной задачи, то выкладывайте для общего обозрения, буду рад протестировать. |
Автор: DropSQL 2.5.2013, 17:46 |
А в чем проблема? парсите протокол и всё будет ОК. Если вам нужно работать с уже распарсиным текстом, то возмите готовую либу для работы с pop3 или imap... Если у вас есть более конкретный вопрос на который хотите получить ответ, задайте. |
Автор: phpmasters 2.5.2013, 18:35 | ||
1. Проблема в том, что не знаю какими операторами PHP сделать перекодировку Темы письма их по ходу будет много разных, (utf-8, и т.п.). Нашол вод столько, перекодировщиков Темы письма
2. Не знаю, как найти и перекодировать Содержание (Тело) письма, бывает оно есть бывает его нет (Content preview:), в чем причина понятия не имею. 3. Про аттачи много читал, т.е. видел куски кода, но как их найти и сохранить в папку на сервер прикрепленные файлы не знаю. 4. По подключению к Imap c SSL / TLS кода рабочего не нашёл, поэтому использую pop3, но это урезает многих почтовых серверов, так как там еще есть SSL / TLS. |
Автор: DropSQL 2.5.2013, 20:45 | ||||||
1)Перекодировать советую с помощью iconv (очень проверенный вариант), кодировку можете узнать в теле письма charset=KOI8-R. 2) Обычно по протоколу приходит 2 копии письма:
и
собственно берете любое которые вам нужно, раскодируете (если требуется, иногда может приходить незакодированное) и выводите пользователю. 3)
таким образом находишь атач, разкодируешь и пишешь в файл. 4) ssl и tsl чаще всего это обычный https подобный (то есть встрено в php, детально как с этим работать можешь посмотреть в том же phpmailer или swiftmailer) |
Автор: phpmasters 2.5.2013, 21:30 | ||||
1. В том и дело, что у меня не все варианты кодировок есть, а той, что нужно нет.
2. У меня другие значения:
3. У меня во втором письме есть attachment, но его не видно, 4. phpmailer хорош для отправки писем, а чтобы их принимал, такого не видел. |
Автор: DropSQL 2.5.2013, 22:22 |
1) кодировку очень не правильно определяете и соответственно вероятность угадать и перекодировать ниже чем кажется, тем более что могут проблемы увеличиться, в случае если 3-4 разных кодировки в тексте будет 2) это не пример и не решение, читайте в интернете и протоколе и о mime типах... 3) ну это вы сами решайте, я не знаю что у вас там не видно и почему 4) я сказал посмотреть пример работы с ssl/tsl, а не приемом/отправки писем. http://php.net/manual/en/book.imap.php http://goo.gl/SNthN http://goo.gl/tRlYg https://github.com/Synchro/PHPMailer - поддерживает как pop3 так и smtp swiftmailer, думаю, тоже поддерживает, читай P.S. мне кажется тему нужно перенести из "Для профи" в "Общие вопросы". |
Автор: phpmasters 2.5.2013, 22:36 |
Все что мне нужно это несколько строк кода, только нужного, а не отсылка в поисковые системы, если б там был этот код, то уже давно б все сделал и Вы об этом даже не узнали. Так как вы пишете, то это явно не профи, а обычный пользователь, профи обычно дают несколько строк кода, и даже без комментариев. Поэтому если, кто знает код или подобное решение, то пишите, так как тема, разровненная в интернете и большинство решений устарели, утратили свою актуальность, а пополнить мало, кто хочет, чтобы было отличное решение по чтению почты на PHP своими руками. ![]() |
Автор: phpmasters 3.5.2013, 09:02 |
Какой функцией найти кодировку письма если их будет больше одной ? |
Автор: DropSQL 3.5.2013, 09:32 | ||||
кодировка относится к текстовым участкам письма, например:
соответственно когда определяете нужную часть письма, там и парсите кодировку, например:
Это пример, реально нужно смотреть по коду. http://atmail.com/ - посомтрите этот код, думаю там есть всё что вам нужно и даже более того P.S. если не помог, извините, мне больше не интересна ваша тема |
Автор: phpmasters 3.5.2013, 10:06 | ||
А если тут нет charset вообще, то что делать ?
|
Автор: ksnk 3.5.2013, 10:50 |
А сообщения-то тоже нет ![]() А вообще,кодировку нужно брать из явно указанной кодировки текста (ее тут нет), кодировки заголовков (utf-8), кодировки "мейлера" по умолчанию. Для mail.ru обычной кодировкой является utf-8, да и для всех online-мэйлеров. |
Автор: phpmasters 3.5.2013, 12:03 |
ksnk Если б была кодировка, сообщение и аттач, то тема бы не выкладывалась на форум. Все что нужно это доработать скрипт и выложить с решением проблемы. а такое общение приводит к тому, что мы уходим от решения и тратим уйму времени на это. Если Вы действительно знаете, как решить задачу, то пишите по теме, как ее решить. ВСЕ ИСХОДНИКИ И ВЫВОД КОДА В БРАУЗЕРЕ УКАЗАНО В ПЕРВОМ СООБЩЕНИИ ТЕМЫ, ТАМ ЕСТЬ АРХИВ, ЧТОБЫ БЫТЬ В КУРСЕ. |
Автор: DropSQL 3.5.2013, 12:37 | ||||
Или вам пришло пустое письмо, или вы его не правильно получили с сервера (только заголовки, без текста и приложений). Предоставте польное исходное сообщение, сможем подсказать по решению проблемы в ДАННОМ, исключительном, случае. |
Автор: phpmasters 3.5.2013, 13:00 |
Дело в том, что на разных серверах по-разному работает этот код, бывали случаи, когда была только тема письма как в правильной кодировке так и не в правильной, бывали только содержание как в правильной кодировке так и не в правильной Поэтому целого подхода в том, что бы правильно письма отображались пока не нашёл, так как почта может идти с разных ящиков к примеру с: www.gmail.com www.mail.ru www.yandex.ru www.rambler.ru и другие |
Автор: DropSQL 5.5.2013, 13:42 |
http://www.codenet.ru/webmast/pop3.php LIST, RETR посмотрите на эти комманды и пересмотрите свой код. Код не может работать на разных серверах по разному, раз он работает на разных серверах по разному, значит он не правильно работает вообще. Мой совет всеже смотреть в сторону http://ua1.php.net/imap |
Автор: phpmasters 5.5.2013, 18:52 |
Что скажете про https://pear.php.net/manual/es/package.networking.net-pop3.intro.php http://webi.ru/webi_articles/6_12_f.html |
Автор: phpmasters 6.5.2013, 11:01 | ||
Использовал файл test_pop3.php из архива pop3class_2009_02_01.zip, который скачал по этой http://www.phpclasses.org/browse/package/2/download/zip.html ВЫВОД в браузере
Как теперь сделать разбиение целого массива в переменные, такие как: // Определяем тему сообщения $msg_subject = ?????? // Определяем содержание сообщения $msg_content_preview = ?????? // Определяем тип сообщения $msg_type = ?????? // Определяем аттачи сообщения $msg_content_preview = ?????? // Определяем дату сообщения $msg_date_answer = ?????? // Определяем отправителя сообщения Return $return_return = ?????? // Определяем отправителя сообщения From $return_from = ?????? // Определяем получателя сообщения $msg_SetFrom_email = ?????? // Определяем размер сообщения $msg_size = ?????? // Определяем приоритет сообщения $msg_priority = ?????? |
Автор: phpmasters 6.5.2013, 12:32 | ||
Код файла test_pop3.php
|