To mój pierwszy post, więc nie obrażę się na żadne uwagi i porady. Co do problemu szukałem informacji przez parę ostatnich dni i nie znalazłem nic, co by mi pomogło. A jak już coś znalazłem, to nie do końca rozumiałem. Moja znajomość php jest raczej mierna. Strona jaką robię to bardziej frankenstein, który jest pozlepiany z wielu elementów, które odnajduję w sieci. Działa, ale estetyki i zaawansowania temu zdecydowanie brakuje. Do rzeczy.
Mój toporny skrypt to część strony, która zajmuje się w firmie obsługą serwisów. Wybrana część ma za zadanie sprawdzić w skrzynce mailowej, które wiadomości pochodzą od klienta, którego dotyczy dane zgłoszenie serwisowe. Identyfikuje je po adresie e-mail, a następnie wpisuje do tabeli bazy danych, w której zapisywane są treści maili. Problem dotyczy kodowania wiadomości. Otóż kiedy wiadomość została wysłana w UTF-8 wszystko jest ok. Kiedy kodowanie określone jest jako ISO-8xxx albu Undefined wted pojawiają się problemy. Zamiast polskich znaków są znaki zapytania. Jeśli zmienię kodowanie pól w bazie danych na UTF-8, wtedy wiadomości e-mail nie w UTF-8 są zapisywane jedynie do pierwszego polskiego znaku w treści. Poniżej kod:
<?php include 'config.php'; $mbox = imap_open("{serwer:143}INBOX", "adres", "haslo"); $ile = imap_num_msg($mbox); $query = "SELECT id, imail FROM zgloszenia WHERE status != 'Zakończone'"; for($i=1;$i<$ile;$i++) { $header = imap_header($mbox, $i); $from = $header->from; foreach ($from as $id => $object) { $fromname = $object->personal; $fromaddress = $object->mailbox . "@" . $object->host; } if($fromaddress == $r[imail]) { $body = imap_fetchbody($mbox, $i, "1.1"); if ($body == "") { $body = imap_fetchbody($mbox, $i, "1"); } $data = $header->date; mysql_query("INSERT INTO maile_klientow (id, id_zgloszenia, data, tresc) VALUES ('NULL', '$r[id]', '$data', '$body')"); }; }; }; imap_close($mbox); ?>
Możecie mnie jakoś nakierować?