napisałem skrypt, który z poziomu php łączy się z serwerem za pomocą pop3 oraz pobiera wiadomości email, w których załączone są pliki CSV. Nagłowki maila jakie otrzymuję wyglądają mniej więcej tak:
'+OK 358845 octects X-From_: xxx@xxx.pl Thu Jun 29 23:00:01 2006 Return-Path: Delivered-To: xxx@xxx.pl Received: from xxx.xxx.pl (xxx.x.xxx.xx) by xxx.home.net.pl with SMTP; Thu, 29 Jun 2006 20:59:59 -0000 Received: (qmail 3497 invoked from network); 29 Jun 2006 21:00:00 -0000 Received: from xxx-12-3.xxx.pl (HELO seagull) (xxx.xxx.x.xx) by xxx-4-2.xxx.pl with SMTP; 29 Jun 2006 21:00:00 -0000 From: "xxxx" Subject: XX_XXXX.CSV To: xxx@xxx.pl Content-Type: multipart/mixed; boundary="=_NextPart_2rfkindysadvnqw3nerasdf"; MIME-Version: 1.0 Date: Thu, 29 Jun 2006 23:00:01 +0200 X-Priority: 3 X-Library: Indy 8.0.25 X-Mailer: XXXX This is a multi-part message in MIME format --=_NextPart_2rfkindysadvnqw3nerasdf Content-Type: text/plain Content-Transfer-Encoding: 7bit XX_XXXX.CSV --=_NextPart_2rfkindysadvnqw3nerasdf Content-Type: application/octet-stream; name="XX_XXXX.CSV" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="XX_XXXX.CSV" QWdlbnQ7TWllanNjb3dvc2M7VWxpY2E7S29kIHBvY3p0b3d5O1dvamV3b2R6dHdvO0dvZHppbnkg b3R3YXJjaWENCkQuSC4gU3Rva3JvdGthO0JhcmRvO3VsLiBHs/N3bmEgMTE7NTctMjU2O0RvbG5v ... i tak dalej.... czyli załącznik zakodowany base64
Generalnie musze pobrać nazwę pliku, dobrać się do jego zawartości, która zaczyna się (w tym przypadku: QWdlbnQ7TWllanN (...)), a następnie pobrać wszystkie dane z pliku (jak wcześniej pisałem csv) i wrzucić do bazy danych. To wszystko jest proste i nie ma z tym problemów. Pojawia się tylko jeden. Podczas wrzucania danych muszę dokonać pewnych porównań na ciągach znaków, a także ostatecznie wrzucić dane do bazy danych w utf'ie. I z tym mam problemy, gdyż nie wiem w jakim formacie są dane (czy w ogóle w jakim kolwiek są?). Cały skrypt, jest pisany w utf. W skrypcie dokonuję porównania (np. województwa) i na polskich znakach się wysypuje. Jakieś pomysły, sugestie?
Będę wdzieczny za każde informacje. Pozdrawiam.