Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z kodowaniem znaków i spamem
Forum PHP.pl > Forum > PHP
kuba_
Cześć wysyłam maila w następujący sposób:

Kod
mail("mojmail@gmail.com" , "Test działania funkcji mail()" , "Działa!" , "From: serwer@gmail.com\r\ncharset=utf8\r\n")


Mail do mnie dochodzi, ale mam następujący problemy:
1. zamiast polskich znaków dostaję krzaczki. ustawiłem kodowanie takie jak mam na Debianie, czyli utf8, ale to nie pomogło.
2. mail odrazu ląduje w folderze spam ;p

Da się je jakoś rozwiązać?

P.S. Treść maila jaką otrzymuję, to:
Kod
charset=utf8


Działa!
ayeo
Nie wiem co tam nawyprawiałeś smile.gif

$headers .= "Content-type: text/html; charset=iso-8859-2 \r\n";
$headers .= "From: \panX\" <panX@gmail.com>\n";

mail("mojmail@gmail.com", "Test działania funkcji mail()", "Działa!", $headers);
kuba_
Mail dochodzi tak jak wcześniej: nie ma polskich znaków i ląduje w spamie...
ayeo
sorry, wkleiłem nie to co miałem


zamień
$headers .= "Content-type: text/html; charset=iso-8859-2 \r\n";

na
$headers .= "Content-type: text/html; charset=utf8 \r\n";
seaquest
Ląduje w spamie, bo podajesz się za serwer gmail.com w from a nim nie jesteś.
kuba_
1. Treść maila uwzględnia już polskie znaki, dzięki temu kodowi co zarzucił ayeo. Tylko jest tutaj mały problem: w temacie wiadomości nadal są krzaczki.
2. Jak wysyłam wiadomość od:
$headers .= "From: \serwer\ <mailer@byleco.com>\r\n";
to też ląduje w spamie. Co ja mam tutaj podać za dane, żeby gmail go tak brzydko nie traktował.
3. W powyższym przykładzie otrzymuję maila od: "serwer" <"serwer">, a czemu nie od serwer <mailer@byleco.com>??
andrew1985
Co do spamu to problem lezy w nieprawidłowym nagłówku.
A co polskich znaków to trzeba przekonwertować kodowanie. Jak masz strone zrobiona w UTF-8 to ta funkcja powinna ci zadziałać prawiodłow. Bynajmniej na moich stronach działa ona jak się należy bo swego czasu też miałem problem z kodowaniem itp. Ale sobie poradziłem.

Kod
function MailTo($title, $text, $mailtto, $mailfrom, $mailfrom_name)
    {
        $user_mail = $mailtto;
        
        $subject = $title;
        $subject = "=?UTF-8?B?".base64_encode($subject)."?=";
        
        $header  = "Reply-to: $mailfrom_name <$mailfrom>\r\n";
        $header .= "From: $mailfrom_name <$mailfrom>\r\n";
        $header .= "Return-Path: $mailfrom_name  <$mailfrom>\r\n";
        $header .= "Content-type: text/html; charset=ISO-8859-2 \r\n";
        $header .= "MIME-Version: 1.0\r\n";

        $text = iconv("UTF-8","ISO-8859-2", $text); //konwertuje tekst z utf na iso
        
        return @mail($user_mail, $subject, $text, $header);
    }
kuba_
Fajną funkcję napisałeś smile.gif Rozwiązuje wszystkie problemy oprócz tego, że wiadomość dalej leci do spamu ;p ach ten gmail...
Ktoś ma jakieś sugestie?
andrew1985
hmmm u mnie działa ale to pewnie dlatego ze leci z innego serwera.
Spróbuj wywalić linike:
$header .= "From: $mailfrom_name <$mailfrom>\r\n";
i sprawdz.
Bo generalnie nie można się podszywac pod serwer.
A jeżeli to nie wyapli to w tą linike wpisz faktyczny adres email serwera z którego wysyłasz.
kuba_
usunąłem tą linijkę i wszystko śmiga! Wielkie dzięki!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.