Może ktoś na pierwszy rzut oka zgadnie, ja bym proponował żebyś ustalił na którym etapie występuje błąd:
- Czy w bazie wpisy które wysyłasz są enkodowane dobrze? W bazie jest wszystko w utf-8? (
SET NAMES
utf8COLLATE
utf8_polish_ci``).
- Czy w perlu dane pobrane z bazy są enkodowane poprawnie? Sprawdź czy się dobrze wyświetlają po stronie klienta. Jeśli chcesz być pewny, zapisz je dokładnie tak jak odczytałeś do jakiegoś pliku tekstowego i wyślij tutaj (dlatego tak, żeby zminimalizować liczbę enkodowań po drodze).
- Czy w mailu dane są enkodowane poprawnie? Spróbuj wrzucić tutaj oryginał wiadomości (tzn. plaintext z nagłówkami) (w gmailu opcje - show original) - niestety nie wszystkie klienty mają taką opcję. Jeśli nie ma takiej opcji, to może chociaż ctrl+s na stronie z wiadomością i wyślij wynikowy plik .html tutaj (dlatego tak, żeby zminimalizować liczbę enkodowań po drodze).
Ogólnie krzaki
oznaczają że coś po drodze interpretuje tekst enkodowany w A jako tekst enkodowany w B i wychodzą cuda.
Poza tym: nie pisałem w perlu, ale patrząc na dokumentację - jaki encoding ustawiasz przy przesyłaniu?
Wspierane to:
------------------------------------------------------------
7bit | Only 7-bit text, all lines <1000 characters
8bit | 8-bit text, all lines <1000 characters
quoted-printable | 8-bit text or long lines (more reliable than "8bit")
base64 | Largely non-textual data: a GIF, a tar file, etc.
Domyślny to "binary" który nadaje się głownie do ascii
Swoją drogą:
dokumentacja napisał(a)
MIME::Lite is not recommended by its current maintainer. There are a number of alternatives, like Email::MIME or MIME::Entity and Email::Sender, which you should probably use instead. MIME::Lite continues to accrue weird bug reports, and it is not receiving a large amount of refactoring due to the availability of better alternatives. Please consider using something else.