Temat: Czytanie maila. [ZEND]

Potrzebowałem prosty mechanizm do czytania maila (nie interesuje mnie załącznik czy temat tylko treść maila).

Do czytania użyłem: Zend_Mail_Storage_Pop3.
Po testowych wysyłkach z windows/linux różnych klientów the bat, thunderbird, outlook(win) + gmail, onet. (różne kombinacje: HTML,TEXT,Załączniki).
Problem jaki napotkałem to maile czasem dostaje w formacie:

treść: "test =B6r=F3ba" -> "test śróba"

($code); //ISO-8859-2
($message->getContent()); //test =B6r=F3ba
(iconv($code,"UTF-8", $message->getContent()));//test =B6r=F3ba
(iconv($code,"UTF-8", urldecode(str_replace("%\n", "", str_replace("=", "%", $message->getContent()))))); //test śróba

Zdaję sobie sprawę, że "str_replace("=", "%"" nie wchodzi w grę. Ma ktoś jakiś pomysł?Michał Sanokowski edytował(a) ten post dnia 23.01.11 o godzinie 15:07
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: Czytanie maila. [ZEND]

ja bym zajrzal do rfc, w jakisposob i w jakich okolicznosciach escapuje i jak to odwrocic

konto usunięte

Temat: Czytanie maila. [ZEND]

Michał Sanokowski:
...
treść: "test =B6r=F3ba" -> "test śróba"
...
Zdaję sobie sprawę, że "str_replace("=", "%"" nie wchodzi w grę....

A może proste

str_replace(array('=B6','=F3'),array('ś','ó') ...

wejdzie w grę ?

Wystarczy wysłać wszystkie polskie znaki diakrytyczne i ...Robert B. edytował(a) ten post dnia 23.01.11 o godzinie 15:42

konto usunięte

Temat: Czytanie maila. [ZEND]

Kłopot w tym, że treść może być zakodowana w MIME.

Ręcznie i po chamsku to te funkcje mogą być przydatne:

http://php.net/manual/en/function.quoted-printable-dec...
http://pl.php.net/manual/en/function.base64-decode.php
http://pl.php.net/manual/en/function.iconv-mime-decode...

Ale MIME nie jest trywialne i warto poczytać w RFC. Zalecałbym jednak zapoznać się z gotową biblioteką, np.:

http://www.theukwebdesigncompany.com/articles/pear-mim...

Wtedy całość sprowadzi się do wywołania odpowiednich funkcji.

Temat: Czytanie maila. [ZEND]

@Adam, tak jak napisałem w zadaniu, nie mam problemu z dostaniem się do treści a z samym kodowaniem.

Biblioteki do kodowania (bez szału ;)
http://svn.assembla.com/svn/PDAserwis/src/source/kodow...

Znalazłem klika rozwiązań ale wszystkie sprowadzały się do: "str_replace(array('=B6'.....".

EDIT:
to też się komuś może przydać:
http://pl.wikipedia.org/wiki/Kodowanie_polskich_znak%C...Michał Sanokowski edytował(a) ten post dnia 24.01.11 o godzinie 19:08

konto usunięte

Temat: Czytanie maila. [ZEND]

$string = 'test =B6r=F3ba';
echo mb_decode_mimeheader("=?iso-8859-1?q?{$string}?=");


Pozdrawiam ;)
...Artur Grzybowski edytował(a) ten post dnia 24.01.11 o godzinie 19:58

konto usunięte

Temat: Czytanie maila. [ZEND]

Michał Sanokowski:
@Adam, tak jak napisałem w zadaniu, nie mam problemu z dostaniem się do treści a z samym kodowaniem.

No ale właśnie biblioteka Pear Mime Decode ma funkcje do dekodowania. Takie rozwiązania typu str_replace to jest "home grom" - trzeba używać do tego celu sprawdzonych rozwiązań, nie domowych ;)

Temat: Czytanie maila. [ZEND]

Dzięki serdeczne, dla potomnych:


mb_decode_mimeheader("=?iso-8859-1?q?{$content}?=") //test �r�ba
iconv('iso-8859-1', 'utf-8', mb_decode_mimeheader("=?iso-8859-1?q?{content}?=")) // test ¶róba
iconv('iso-8859-2', 'utf-8', mb_decode_mimeheader("=?iso-8859-1?q?{content}?=")) //test śróba :)!



Pewnie to zależy od wielu czynników, ale z tego co zauważyłem wysyłając maila z gmaila gdzie treść zaczyna się na literkę z ogonkiem. To trzeba na samym początku użyć: imap_base64, ale na to akurat nie trudno wpaść ;)

W każdym razie dzięki Artur i Adam!

Następna dyskusja:

Czytanie danych + relacja




Wyślij zaproszenie do