Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PEAR Mail - Polskie znaki
Forum PHP.pl > Forum > PHP
mrSlowFlow
Korzystam z takiego kodu:

  1. <?php
  2. require_once "Mail.php";
  3.  
  4. $from = "biuro@podróże.com";
  5. $to = "adresat@mail.com";
  6. $subject = "Rezerwacja";
  7. $body = "Potwierdzenie rezerwacji";
  8.  
  9. $host = "mail.example.com";
  10. $username = "smtp_username";
  11. $password = "smtp_password";
  12.  
  13. $headers = array ('From' => $from,
  14.   'To' => $to,
  15.   'Subject' => $subject);
  16. $smtp = Mail::factory('smtp',
  17.   array ('host' => $host,
  18.     'auth' => true,
  19.     'username' => $username,
  20.     'password' => $password));
  21.  
  22. $mail = $smtp->send($to, $headers, $body);
  23.  
  24. if (PEAR::isError($mail)) {
  25.   echo("<p>" . $mail->getMessage() . "</p>");
  26.  } else {
  27.   echo("<p>Wysłano wiadomość!</p>");
  28.  }
  29. ?>



Działa bez problemu, ale adres email z którego chcę wysłać wiadomość zawiera polskie znaki. Spróbowałem takiego kodu:

  1. <?php
  2. $from = mb_encode_mimeheader($from, "UTF-8", "Q");
  3. ?>


Ale wyskakuje mi wtedy błąd:

Cytat
unable to add recipient [adresat@mail.com]: Invalid response code received from server


Bez tej dodatkowej linijki kodu wyskakuje taki błąd:

Cytat
No from address given


Jakieś pomysły jak rozwiązać ten problem? Domeny nie zmienie, bo taką sobie klient zażyczył.
erix
A gdzie masz w nagłówkach ustawienie kodowania...?
mrSlowFlow
  1. <?php
  2. require_once "Mail.php";
  3.  
  4. $from = "biuro@podróże.com";
  5. $to = "adresat@mail.com";
  6. $subject = "Rezerwacja";
  7. $body = "Potwierdzenie rezerwacji";
  8. $content = "text/html; charset=utf-8";
  9. $transfer = "8bit";
  10.  
  11. $host = "mail.example.com";
  12. $username = "smtp_username";
  13. $password = "smtp_password";
  14.  
  15. $headers = array ('From' => $from,
  16.   'To' => $to,
  17.   'Subject' => $subject,
  18.   'Content-Type' => $content,
  19.   'Content-Transfer-Encodin' => $transfer);
  20.  
  21. $smtp = Mail::factory('smtp',
  22.   array ('host' => $host,
  23.     'auth' => true,
  24.     'username' => $username,
  25.     'password' => $password));
  26.  
  27. $mail = $smtp->send($to, $headers, $body);
  28.  
  29. if (PEAR::isError($mail)) {
  30.   echo("<p>" . $mail->getMessage() . "</p>");
  31.  } else {
  32.   echo("<p>Wysłano wiadomość!</p>");
  33.  }
  34. ?>
Wciąż to samo.



Użyłem takiego rozwiązania do prawidłowego wyświetlania polskich znaków w temacie wiadomości:
  1. <?php
  2. $encoded_subject = "=?utf-8?B?".base64_encode($subject)."?=";
  3. ?>

Działa to bardzo dobrze, jednak nie sprawdza się przy adresie e-mail.

Ma ktoś jakiś pomysł jak to rozwiązać?
phpion
podróże = xn--podre-3ta37g

Spróbuj więc dać:
  1. <?php
  2. $from = "biuro@xn--podre-3ta37g.com";
  3. ?>
mrSlowFlow
Niestety wciąż ten sam błąd.
Cytat
unable to add recipient [adresat@mail.com]: Invalid response code received from server
ernie242
Looknij na http://pear.php.net/manual/en/package.mail.mail.send.php, poniżej masz komentarz niejakiego "Note by: burak a.t toruko d.o.t com". Może Ci się przydać smile.gif

Albo może urlencode questionmark.gif?
mrSlowFlow
Tego też próbowałem i wciąż to samo. Chyba będe musiał przekonać klienta do założenia normalnej domeny...
erix
Hmm, a serwer nie ma sprawdzania pola from przy wysyłce? Tzn. ogranicza adresy do znajdujących się na koncie?
mrSlowFlow
Nie.
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.