Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] wysyłanie maila - brak kodowania w temacie
Forum PHP.pl > Forum > Przedszkole
Gość
mam funkcje:
  1. <?php
  2. function mail($to, $subject, $message, $headers = '', $additional_parameters = '') {
  3.  
  4. $to = trim($to);
  5. $subject = trim($subject);
  6. $message = trim($message).$this->ustawienia['email']['podpis'];
  7. $headers = trim($headers);
  8.  
  9.  
  10. if (empty($to)) {
  11. return false;
  12. }
  13.  
  14. if (empty($subject)) {
  15. return false;
  16. }
  17. if (empty($message)) {
  18. return false;
  19. }
  20.  
  21. // wybierz typ
  22. Switch($this->ustawienia['email']['typ']) {
  23.  
  24. case 'smtp':
  25.  
  26. $recipients = explode(',', $to);
  27.  
  28. $socket = fsockopen($this->ustawienia['email']['host'], $this->ustawienia['email']['port'], $errno, $error, 25);
  29. socket_set_timeout($socket, 5, 0);
  30. if (!$socket) {
  31. return false;
  32. $this->log_dodaj('Nie można było nawiązać połączenia z serwerem poczty',__FILE__,__LINE__);
  33. }
  34.  
  35. if(!$this->server_response($socket, '220')){return false;}
  36.  
  37. fwrite($socket, "HELO " . $this->ustawienia['email']['host'] . "rn");
  38. if(!$this->server_response($socket, '250')){return false;}
  39.  
  40. /* Logujemy sie do serwera */
  41. fwrite($socket, "AUTH LOGINrn");
  42. if(!$this->server_response($socket, '334')){return false;}
  43. fwrite($socket, base64_encode($this->ustawienia['email']['login']) . "rn");
  44. if(!$this->server_response($socket, '334')){return false;}
  45. fwrite($socket, base64_encode($this->ustawienia['email']['haslo']) . "rn");
  46. if(!$this->server_response($socket, '235')){return false;}
  47.  
  48. /* Okreslamy nadawce listu */
  49. fwrite($socket, "MAIL FROM: <" . $this->ustawienia['email']['email'] . ">rn");
  50. if(!$this->server_response($socket, '250')){return false;}
  51.  
  52. /* Okreslamy odbiorcow */
  53. foreach($recipients as $send_to) {
  54. $send_to = trim($send_to);
  55. if (ereg('^.+@.+..+$', $send_to)) {
  56. fwrite($socket, 'RCPT TO: <' . $send_to . ">rn");
  57. $this->server_response($socket, '250');
  58. }
  59. }
  60.  
  61. fwrite($socket, "DATArn");
  62. if(!$this->server_response($socket, '354')){return false;}
  63.  
  64. /* Wysylamy dodatkowe naglowki */
  65. fwrite($socket, 'Subject: ' . $subject . "rn");
  66.  
  67. fwrite($socket, $headers . "rnrn");
  68.  
  69. /* Teraz wysylamy tresc listu */
  70. fwrite($socket, $message . "rn");
  71. fwrite($socket, ".rn");
  72. if(!$this->server_response($socket, '250')){return false;}
  73.  
  74.  
  75. /* Rozlaczamy sie */
  76. fwrite($socket, "QUITrn");
  77. fclose($socket);
  78. return true;
  79. break;
  80.  
  81. // zwykly mail
  82. default:
  83. return mail($to, $subject, $message, $headers,$additional_parameters);
  84. break;
  85. }
  86. }
  87.  
  88. function server_response($socket, $response) {
  89. do {
  90. if(!($server_response = fgets($socket, 256))) {
  91. $this->log_dodaj('Nie mozna pobrac odpowiedzi serwera poczty!',__FILE__,__LINE__);
  92. return false;
  93. }
  94. }
  95. while (substr($server_response, 3, 1) != ' ');
  96.  
  97. if(substr($server_response, 0, 3) != $response) {
  98. $this->log_dodaj('Błąd serwera poczty: '.$server_response,__FILE__,__LINE__);
  99. return false;
  100. }
  101.  
  102. return true;
  103. }
  104. ?>


wszystko jest ok.. oprócz tego, ze w temacie przy wysyłaniu nie ma kodowania znaków.. domyślnie wszystko idzie przez utf.. ale gdy w temacie da sie polskie czcionki to nie sa one pokazywane... gdzie lezy przyczyna tego bledu... w tresci wiadomosci wszystkie polskie znaki sa ok...
gladiror
Przekonwertuj caly plik na ISO, dodaj naglowki z manuala (wpisz funkcja mail) w funkcji mail i powinno działać. Bym zapomnial... jeszcze w head musisz dac naglowek z kodowaniem
elnino.pl
Musisz zakodować temat:

  1. <?php
  2. function encodeMimeSubject($s)
  3. {
  4. $lastspace=-1;
  5. $r="";
  6. $buff="";
  7. $mode=1;
  8. for ($i=0; $i<strlen($s); $i++) 
  9. {
  10. $c=substr($s,$i,1);
  11. if ($mode==1) 
  12. {
  13. $n=ord($c);
  14. if ($n & 128) 
  15. {
  16. $r.="=?UTF-8?Q?";
  17. $i=$lastspace;
  18. $mode=2;
  19. }
  20. else 
  21. {
  22. $buff.=$c;
  23. if ($c==" ") 
  24. {
  25. $r.=$buff;
  26. $buff="";
  27. $lastspace=$i;
  28. }
  29. }
  30. } 
  31. else if ($mode==2) 
  32. {
  33. $r.=qpchar($c);
  34. }
  35. }
  36. if ($mode==2) 
  37. $r.="?=";
  38. return $r;
  39. }
  40.  
  41. function qpchar($c) 
  42. {
  43. $n=ord($c);
  44. if ($c==" ") return "_";
  45. if ($n>=48 && $n<=57) return $c;
  46. if ($n>=65 && $n<=90) return $c;
  47. if ($n>=97 && $n<=122) return $c;
  48. return "=".($n<16 ? "0" : "").strtoupper(dechex($n));
  49. }
  50. ?>
Gość
elnino.pl, thx smile.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.