Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Mailer:1-skrypt nie działa,a 2-działa lecz wypluwa błąd.
Forum PHP.pl > Forum > Przedszkole
jerry1984
Witam

Tak jak podałem w temacie, znalazłem na forum ciekawe skrypty dotyczące wysyłania maili za pomocą serwera "mailer" lecz mam z nimi problem.Nie znalazłem odpowiedzi dotyczące moich errorów.

Posiadam skrypt który nie generuje żadnych błędów, a maile nie dochodzą do danej poczty oto przykład skryptu:
  1. <?php
  2. require("phpmailer/class.phpmailer.php");
  3. $mail = new PHPMailer();
  4.  
  5. $mail->PluginDir = "phpmailer/";
  6. $mail->From = "jerry@o2.pl"; //adres naszego konta
  7. $mail->FromName = "phpMailer tester";//nagłówek From
  8. $mail->Host = "poczta.o2.pl";//adres serwera SMTP
  9. $mail->Mailer = "smtp";
  10. $mail->Username = "jerry@o2.pl";//nazwa użytkownika
  11. $mail->Password = "*******";//nasze hasło do konta SMTP
  12. $mail->SMTPAuth = true;
  13. $mail->SetLanguage("en", "phpmailer/language/");
  14.  
  15. $mail->Subject = "Mail testowy";//temat maila
  16.  
  17. // w zmienną $text_body wpisujemy treść maila
  18. $text_body = "Cześć, chyba phpMailer działa \n\n";
  19. $text_body .= "Na zawsze Twój, \n";
  20. $text_body .= "PHPMailer";
  21.  
  22. $mail->Body = $text_body;
  23. // adresatów dodajemy poprzez metode 'AddAddress'
  24. $mail->AddAddress("jerry@ksiegarnia.ugu.pl","Jurek");
  25.  
  26. if(!$mail->Send())
  27. echo "There has been a mail error <br>";
  28. echo $mail->ErrorInfo."<br>";
  29.  
  30. // Clear all addresses and attachments
  31. $mail->ClearAddresses();
  32. $mail->ClearAttachments();
  33. echo "mail sent <br>";
  34.  
  35. ?>


Następny przykład który znalazłem działa i wysyła maile ale generuje błąd którego nie rozumię:

Kod
Notice: Undefined variable: server_response in C:\wamp\www\test.php on line 10


a oto jego zawartość:

  1. <?php
  2. $o_smtp_host='poczta.o2.pl'; //serwer
  3. $o_smtp_user='jerry1984'; //login
  4. $o_smtp_pass='omega123'; //haslo
  5. $o_webmaster_email='jerry1984@o2.pl'; //adres email
  6.  
  7.  
  8. function server_parse($socket, $expected_response)
  9. {
  10. while (substr($server_response, 3, 1) != ' ')
  11. {
  12. if (!($server_response = fgets($socket, 256)))
  13. error('Brak odpowiedzi ze strony serwera pocztowego. Proszę skontaktować się z administ
  14. ratorem.', __FILE__, __LINE__);
  15. }
  16.  
  17. if (!(substr($server_response, 0, 3) == $expected_response))
  18. print('Nie można wysać wiadomości e-mail, z powodu: "'.$server_response.'" Proszę skontaktowa się z administratorem. ');//, __FILE__, __LINE__);
  19. }
  20.  
  21.  
  22. #$to='adresat_listu';
  23. $to='jerry1984@o2.pl'; //adres email
  24. #$subject='tytul wiadomosci'; //tytul wiadomosci
  25. $subject='TEST'; //tytul
  26. #$message='TREŚĆ'; //tresc
  27. $message="
  28. <html>
  29. <head>
  30. <title>Tytuł strony</title>
  31. </head>
  32. <body bgcolor=\"yellow\">
  33. <H2>To jest wiadomość testowa!<br><br>OK!</H2>
  34. </body>
  35. </html>";
  36.  
  37. //Tu określamy Mime i kodowanie strony
  38. //Mime to nic innego jak spis akceptowanych przez serwer typów plików - mime type,
  39. //kodowania chyba nie trzeba tłumaczyć
  40. $headers = "MIME-Version: 1.0\r\n";
  41. $headers .= "Content-type: text/html; charset=iso-8859-2\r\n";
  42. //nagłówek od kogo wysyłana jest poczta
  43. $headers .= "From: jerry1984@o2.pl>\r\n";
  44. //dodatkowe nagłówki C.Copy
  45. $headers .= "Cc: \r\n";
  46. $headers .= "Bcc: \r\n";
  47.  
  48.  
  49. function smtp_mail($to, $subject, $message, $headers)
  50. {
  51.  
  52. global $o_smtp_host,$o_smtp_user,$o_smtp_pass,$o_webmaster_email,$i,$server_response;
  53. //koniec z definiowaniem
  54.  
  55. $recipients = explode(',', $to);
  56.  
  57. // Are we using port 25 or a custom port?
  58. if (strpos($o_smtp_host, ':') !== false)
  59. list($o_smtp_host, $o_smtp_port) = explode(':', $o_smtp_host);
  60. else
  61. {
  62. $smtp_host = $o_smtp_host;
  63. $smtp_port = 25;
  64. }
  65.  
  66. if (!($socket = fsockopen($smtp_host, $smtp_port, $errno, $errstr, 15)))
  67. error('Nie można połączyć się z serwerem smtp "'.$o_smtp_host.'" ('.$errno.') ('.$errstr.')', __FILE__, __LINE__);
  68.  
  69. server_parse($socket, '220');
  70.  
  71. if ($o_smtp_user != '' && $o_smtp_pass != '')
  72. {
  73. fwrite($socket, 'EHLO '.$smtp_host."\r\n");
  74. server_parse($socket, '250');
  75.  
  76. fwrite($socket, 'AUTH LOGIN'."\r\n");
  77. server_parse($socket, '334');
  78.  
  79. fwrite($socket, base64_encode($o_smtp_user)."\r\n");
  80. server_parse($socket, '334');
  81.  
  82. fwrite($socket, base64_encode($o_smtp_pass)."\r\n");
  83. server_parse($socket, '235');
  84. }
  85. else
  86. {
  87. fwrite($socket, 'HELO '.$smtp_host."\r\n");
  88. server_parse($socket, '250');
  89. }
  90.  
  91. fwrite($socket, 'MAIL FROM: <'.$o_webmaster_email.'>'."\r\n");
  92. server_parse($socket, '250');
  93.  
  94. $to_header = 'To: ';
  95.  
  96. @reset($recipients);
  97. while (list(, $email) = @each($recipients))
  98. {
  99. fwrite($socket, 'RCPT TO: <'.$email.'>'."\r\n");
  100. server_parse($socket, '250');
  101.  
  102. $to_header .= '<'.$email.'>, ';
  103. }
  104.  
  105. fwrite($socket, 'DATA'."\r\n");
  106. server_parse($socket, '354');
  107.  
  108. fwrite($socket, 'Subject: '.$subject."\r\n".$to_header."\r\n".$headers."\r\n\r\n".$message."\r\n");
  109.  
  110. fwrite($socket, '.'."\r\n");
  111. server_parse($socket, '250');
  112.  
  113. fwrite($socket, 'QUIT'."\r\n");
  114. fclose($socket);
  115.  
  116. return true;
  117. }
  118.  
  119. // "-f L_O_G_I_N@tlen.pl" to adres, gdzie przychodza zwroty
  120. if(smtp_mail($to, $subject, $message, $headers, "jerry1984@o2.pl")==true)
  121. echo"<br>wiadomość wysłano";
  122. ?>


Dodam jeszcze , że skonfigurowałem zawartość w Apache plik php.ini:
Kod
[mail function]
SMTP = poczta.o2.pl
smtp_port = 587
username = jerry@o2.pl
password = ******

Proszę o jakieś wskazówki, abym mógł naprawić błędy.
Z góry dziękuje
Pozdrawiam
Ilware
spróbuj dodać do funkcji :

  1. $mail->SMTPDebug = 2;
  2. $mail->Port =odpowieni port prawdopodobnie 587 ale zobacz w doc. o2


oraz jeżeli będzie potrzebne to też

  1. $mail->SMTPSecure = "ssl";


debug w opcji 2 wywali Ci wszystkie błędy, podaj je

p.s.
nie podawaj haseł na forum;)

edit.

Nie musisz nic zminiać w php.ini jak wysyłasz w ten sposób przez smtp
jerry1984
Cytat
p.s.
nie podawaj haseł na forum;)


To są fikcyjne dane wink.gif

Oki po dodaniu tych trzech wpisów, wywalił mi parę błędów:

Kod
Warning: fsockopen() [function.fsockopen]: unable to connect to ssl://poczta.o2.pl:587 (Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP?) in C:\wamp\www\phpmailer\class.smtp.php on line 122
SMTP -> ERROR: Failed to connect to server: Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP? (32) There has been a mail error
SMTP Error: Could not connect to SMTP host.
mail sent


ale nic mi nie mówią te błędy.

Pozdrawiam
Ilware
zainstaluj ssl w apache;)
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.