Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Zamiast funkcji mail()
Forum PHP.pl > Forum > Przedszkole
february
dzień dobry,

Jestem świadom, że temat wraca jak bumerang, przejrzałem to i inne fora ale nie mogę temu podołać. Mam strone na jednym z ser.hostingowych i oczywiście nie mam dostępu do pliku php.ini, więc trzeba improwizować jednak phpmailer przysporzyło mi nie lada problemów i znienacka wpadłem na jedno z forum gdzie ktoś podał gotową funkcję (poniżej), podałem na pewno poprawny adres serwera, login, hasło, email oraz zmieniłem na wymagany port 587 jednak cały czas dostaje komunikat o niemożności nawiązania połączenia smtp. Może w złym miejscu port zmieniam ? mógł by ktoś dopomóc - mając na uwadze, że to dział "Przedszkole" smile.gif
  1. <?php
  2. //Konfiguracja
  3. $smtp_host=""; //adres serwera smtp np:smtp.wp.pl
  4. $smtp_username=""; //login na twoje konto
  5. $smtp_password=""; //haslo na twoje konto
  6. $email=""; //twoj adres email
  7. //Koniec Konfiguracji
  8. function smtp_mail($mail_to, $subject, $message) {
  9. global $smtp_host, $smtp_user, $smtp_pass, $email;
  10.  
  11. if($mail_to == '')
  12. $error = 'Nie podałe? adresu odbiorcy!';
  13. if(trim($subject) == '')
  14. $error = 'Nie podałe? tematu wiadomo?ci!';
  15. if(trim($message) == '')
  16. $error = 'Wiadomo?ć jest pusta!';
  17. if(!$socket = pfsockopen($smtp_host, 25, $errno, $errstr, 20))
  18. $error = 'Nie mogę się poł?czyć z serwerem SMTP!';
  19.  
  20. if(!empty($error)){
  21. echo "<B>Bł?d: </B>$error<BR>\n";
  22. return false;
  23. }
  24.  
  25. server_parse($socket, '220');
  26.  
  27. if(!empty($smtp_user) && !empty($smtp_pass)){
  28. fputs($socket, 'EHLO '.$smtp_host."\r\n");
  29. server_parse($socket, '250');
  30. fputs($socket, "AUTH LOGIN\r\n");
  31. server_parse($socket, '334');
  32. fputs($socket, base64_encode($smtp_user)."\r\n");
  33. server_parse($socket, '334');
  34. fputs($socket, base64_encode($smtp_pass)."\r\n");
  35. server_parse($socket, '235');
  36. }
  37. else{
  38. fputs($socket, 'HELO '.$smtp_host."\r\n");
  39. server_parse($socket, '250');
  40. }
  41.  
  42. fputs($socket, 'MAIL FROM: <' . $email . ">\r\n");
  43. server_parse($socket, '250');
  44.  
  45. $mail_to_array = explode(',', $mail_to);
  46.  
  47.  
  48. $to_header = 'To: ';
  49. @reset($mail_to_array);
  50.  
  51. foreach($mail_to_array as $mail_to_address){
  52. $mail_to_address = trim($mail_to_address);
  53.  
  54. if (preg_match('/[^ ]+\@[^ ]+/', $mail_to_address)) {
  55. fputs( $socket, "RCPT TO: <$mail_to_address>\r\n" );
  56. server_parse($socket, '250');
  57. }
  58. $to_header .= (($mail_to_address != '') ? ', ' : '')."<$mail_to_address>";
  59. }
  60.  
  61. $message = preg_replace("/(?<!\r)\n/si", "\r\n", $message);
  62.  
  63. fputs($socket, "DATA\r\n");
  64. server_parse($socket, "354");
  65. fputs($socket, "Subject: $subject\r\n");
  66. fputs($socket, "$to_header\r\n");
  67. fputs($socket, "From: kto?tam\r\n");
  68. fputs($socket, "$headers\r\n\r\n");
  69. fputs($socket, "$message\r\n");
  70. fputs($socket, ".\r\n");
  71. server_parse($socket, '250');
  72. fputs($socket, "QUIT\r\n");
  73. fclose($socket);
  74.  
  75. return true;
  76. }
  77. function server_parse($socket, $response) {
  78. while (substr($server_response,3,1)!=' ') {
  79. if(!($server_response=fgets($socket, 256))) {
  80. die('Nie mogę pobrać kodów zwróconych przez serwer.');
  81. }
  82. }
  83. if(!(substr($server_response, 0, 3) == $response)) {
  84. die('Wyst?pił problem z wysyłaniem maili. Serwer zwrócił komunikat:
  85. '.$server_response);
  86. }
  87. }
  88.  
  89. ?>
NickOver
Nigdy tego nie używałem, ale z tego co widzę to masz zadeklarowane zmienne $smtp_username i $smtp_password a w kodzie są używane zmienne $smtp_user i $smtp_pass. Po prostu zamien to:
  1. $smtp_username="";
  2. $smtp_password="";

na to:
  1. $smtp_user="";
  2. $smtp_pass="";

Jeśli to nie zadziała to nie wiem ;p
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.