Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]problem z phpmailerem i utf8
Forum PHP.pl > Forum > Przedszkole
dojek
Witam,

Wiem ze ten temat się przewijał kilka razy na forum ale żadne rozwiązanie tam podane nie rozwiązało mojego problemu:

Mam taki formularz narazie prosty:



Uploaded with ImageShack.us

i do niego podpięty skrypt PHP który wysyła maila do mnie i na adres podany w formularzu jako potwierdzenie ze się coś takiego wysłało:

  1. <?php
  2. require("class.phpmailer.php");
  3. $email=htmlentities($_POST['email']);
  4. $mensagem=htmlentities($_POST['mensagem']);
  5. $nome=htmlentities($_POST['nome']);
  6.  
  7. $mail = new PHPMailer();
  8. $mail->IsHTML(true);
  9.  
  10. //$mail->SMTPSecure = "ssl"; // sets the prefix to the servier
  11. $mail->SMTPAuth = true; // enable SMTP authentication
  12. $mail->IsSMTP(); // telling the class to use SMTP
  13. $mail->FromName = "Firma Apple";
  14. $mail->Host = "www.poczta.fm"; // SMTP server
  15. $mail->From = "dojek@poczta.fm";
  16. $mail->Username = "##########";
  17. $mail->Password = ".................";
  18. $mail->Port = 587;
  19. $mail->AddAddress("dojek@poczta.fm");
  20. $mail->Subject = "Formularz kontaktowy ze strony od firmy:$nome";
  21. $mail->Body="Dane z formularza kontakowego! <br><br>Wiadomość: $mensagem<br><br> Dane firmy: $nome<br><br>e-mail kontakowy: $email";
  22. $mail->WordWrap = 50;
  23. $mail->CharSet="utf-8";
  24.  
  25. if(!$mail->Send())
  26. {
  27. echo 'Message was not sent.';
  28. echo 'Mailer error: ' . $mail->ErrorInfo;
  29. }
  30. else
  31. {
  32. echo 'Message has been sent.';
  33. }
  34.  
  35. $mail = new PHPMailer();
  36. $mail->IsHTML(true);
  37. //$mail->CharSet="utf-8";
  38. $mail->SMTPAuth = true; // enable SMTP authentication
  39. $mail->IsSMTP(); // telling the class to use SMTP
  40. $mail->Host = "www.poczta.fm"; // SMTP server
  41. $mail->FromName = "Firma Apple";
  42. $mail->From = "dojek@poczta.fm";
  43. $mail->Username = "##########";
  44. $mail->Password = ".................";
  45. $mail->Port = 587;
  46. $mail->AddAddress("$email");
  47.  
  48. $mail->Subject = "potwierdzenie wysłania formularza kontaktowego ze strony";
  49. $mail->Body="Witaj,<br>Jest to wiadomość potwierdzająca wysłanie do nas formularza kontaktowego: <br><br>Wiadomość: $mensagem<br><br> Dane firmy: $nome<br><br>e-mail kontakowy: $email";
  50. $mail->WordWrap = 50;
  51.  
  52. if(!$mail->Send())
  53. {
  54. echo 'Message was not sent.';
  55. echo 'Mailer error: ' . $mail->ErrorInfo;
  56. }
  57. else
  58. {
  59. echo 'Message has been sent.';
  60. }
  61.  
  62. $txt = '' ;
  63. foreach( $_POST as $key => $value ) {
  64. $txt .= $key.': '.$value.'<br/>'."\r\n" ;
  65. }
  66.  
  67. ?>


Problem w tym ze mail przychodzi jako UTF-8 tylko polskie znaki się pojawiają tylko w tekście który jest przesyłany jako HTML, natomiast to co jest przesyłane co ktoś wpisał do formularza to tam się pojawiają krzaczki.

Wygląd maila:



Uploaded with ImageShack.us

Jak widać w kodzie mam wpisane

  1. $mail->CharSet="utf-8";


ale to tylko pomaga dla tekstu który jest ręcznie wpisywany żeby szedł na maila.

Dzieki z góry za pomoc, bo przy formularzu zostały mi tylko 3 rzeczy i mógłbym skończyć już stronęsmile.gif
nekomata
Zobacz może źródło strony w otrzymanym mail'u . I o ile dobrze pamiętam mail to zwykła strona html , więc może daj head body itd , razem z odpowiednimi znakami.
dojek
Cytat(nekomata @ 20.06.2011, 08:42:37 ) *
Zobacz może źródło strony w otrzymanym mail'u . I o ile dobrze pamiętam mail to zwykła strona html , więc może daj head body itd , razem z odpowiednimi znakami.



Cześc,

dzieki za pomoc, jednak bede Cie musial prosić o rozwinecie tematu bo nie wiem za bardzo jakbym mial to zrobic:

  1. $mail->Body="Dane z formularza kontakowego! <br><br>Wiadomość: $mensagem<br><br> Dane firmy: $nome<br><br>e-mail kontakowy: $email";


w tej linijce mialbym cos takiego wstawic?
nekomata
Man na myśli źródło otrzymanego mail'a , tam jest prawdopodobnie błąd , zapuść na to w3validator i może się czegoś dowiesz.
Ilware
Witam,

przede wszystkim, nie wywołuj dwa razy klasy?Po co?Php mailer ma metody mi takie jak:
  1. AddAddress($address, $name = "")

jak wysyłasz tą samą treść, jeżeli chcesz wysłać różną, po send() użyj
  1. ClearAddresses()

i nadpisz body.

co do twojego problemu, uzupełnij html , i ew zobacz co dostajesz w nagłówkach maila.Powinieneś mieć gdzieś na skrzynce możliwość podglądu tego.
dojek
podaje efekty:

  1. require("class.phpmailer.php");
  2. $email=htmlentities($_POST['email']);
  3. $mensagem=htmlentities($_POST['mensagem']);
  4. $nome=htmlentities($_POST['nome']);
  5.  
  6. $mail = new PHPMailer();
  7. $mail->IsHTML(true);
  8. $mail->CharSet="utf-8";
  9. $mail->SMTPAuth = true; // enable SMTP authentication
  10. $mail->IsSMTP(); // telling the class to use SMTP
  11. $mail->FromName = "Firma Owoc";
  12. $mail->Host = "www.poczta.fm"; // SMTP server
  13. $mail->From = "dojek@poczta.fm";
  14. $mail->Username = "###########";
  15. $mail->Password = "*************";
  16. $mail->Port = 587;
  17. $mail->AddAddress("dojek@poczta.fm");
  18.  
  19. $headers["MIME-Version"] = "1.0";
  20. $headers["Content-Type"] = "text/plain; charset=utf-8";
  21. $headers["Content-Transfer-Encoding"] = "base64";
  22.  
  23. $mail->Subject = "Formulaęść kontaktowy ze strony od firmy:$nome";
  24. $mail->Body="<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"></head><body>Dane z formularza kontakowego! <br><br>Wiadomość: $mensagem<br><br> Dane firmy: $nome<br><br>e-mail kontakowy: $email</body></html>";
  25. $mail->WordWrap = 50;
  26.  
  27.  
  28. if(!$mail->Send())
  29. {
  30. echo 'Message was not sent.';
  31. echo 'Mailer error: ' . $mail->ErrorInfo;
  32. }
  33. else
  34. {
  35. echo 'Message has been sent.';
  36. }


a przychodzi cos takiego:-(:



Uploaded with ImageShack.us





anyone?

Ja ciagle z tym sobie nie moge dac rady sad.gif
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.