Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]problem z phpmailerem i utf8
dojek
post 20.06.2011, 07:29:11
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 5.06.2006

Ostrzeżenie: (0%)
-----


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

Ten post edytował dojek 20.06.2011, 14:55:52
Go to the top of the page
+Quote Post
nekomata
post 20.06.2011, 07:42:37
Post #2





Grupa: Zarejestrowani
Postów: 314
Pomógł: 44
Dołączył: 12.11.2010
Skąd: UK

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
dojek
post 20.06.2011, 07:56:32
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 5.06.2006

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
nekomata
post 21.06.2011, 05:45:19
Post #4





Grupa: Zarejestrowani
Postów: 314
Pomógł: 44
Dołączył: 12.11.2010
Skąd: UK

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Ilware
post 21.06.2011, 06:56:50
Post #5





Grupa: Zarejestrowani
Postów: 248
Pomógł: 31
Dołączył: 14.12.2010
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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.


--------------------
Jeżeli pomogłem kliknij "Pomógł" :)
Go to the top of the page
+Quote Post
dojek
post 8.09.2011, 06:27:42
Post #6





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 5.06.2006

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.06.2025 - 18:40