Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt wysyłający wiadomość
Forum PHP.pl > Forum > PHP
Wild
Przykład jest z książki, uczę się dopiero PHP i utknąłem przy jednym zadaniu. Mianowicie chodzi o wysyłanie wiadomości email za pomocą formularza. Może wrzucę kod HTML - tworzący formularz oraz skrypt PHP za pomocą którego można wysłać wiadomość na skrzynkę.

Kod HTML - formularz kontkatowy
Kod
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
<title>Listing11.10 - Prosty formularz kontaktowy</title>
</head>
<body>
<form action="wyslij.php" method="POST">
<p><strong>Imię i nazwisko: </strong><br />
<input type="text" size="25" name="imie"  /></p>
<p><strong>Adres email: </strong><br />
<input type="text" size="25" name="e-mail" /></p>
<p><strong>Wiadomość: </strong><br />
<textarea name="wiadomosc" cols="30" rows="5"></textarea></p>
<p><input type="submit" value="Wyślij" /></p>
</form>
</body>
</html>


Skrypt PHP wysyłający formularz kontaktowy:
Kod
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
<title>Listing 11.11 - Wysyłanie formularza kontaktowego</title>
</head>
<body>
<?php
        echo "<p><b>".$_POST["imie"]. "</b>, dziękujemy za wypełnienie formularza.</p>";
        echo "<p>Twój adres to: <b>" .$_POST["e-mail"]. "</b>.</p>";
        echo "<p>Twoja wiadomość to: <br />";
        echo $_POST['wiadomosc']. "</p>";
        //treść
        $tresc = "Imię i nazwisko: " .$_POST["imie"]. "\n";
        $tresc .= "Adres e-mail: " .$_POST["e-mail"]. "\n";
        $tresc .= "Wiadomość: " .$_POST["wiadomosc"]. "\n";
        //nagłówki
        $odbiorca = "skrzysiek08@gmail.com";
        $temat = "Formularz kontaktowy";
        $naglowki = "From: Strona WWW <skrzysiek08@gmail.com> \r\n";
        $naglowki .= "Reply-To: " .$_POST["e-mail"];
        //wysyłanie wiadomości
        mail($odbiorca, $temat, $tresc);
?>
</body>
</html>


Niby jest dobrze, ale pojawia się Warning o następującej treści:
Kod
Warning: mail() [function.mail]: SMTP server response: 530 5.7.0 Must issue a STARTTLS command first. 22sm2258353fkq.51 in C:\Program Files\Apache Group\Apache2\htdocs\Rozdzial 11 - Formularze\wyslij.php on line 23

Chyba chodzi o odpowiedz serwera SMTP jak się domyślam, ponieważ email jest chyba wysyłany za pomocą klienta pocztowego, którego mam na kompie zainstalowanego. Klient jest skonfigurowany poprawnie.

W książce było napisane, żeby zmienić wartości kilku dyrektyw w pliku konfiguracyjnym php.ini.
Kod
[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25

; For Win32 only.
sendmail_from = me@localhost.com


Powyższe dyrektywy zmieniłem na:
Kod
[mail function]
; For Win32 only.
SMTP = smtp.gmail.com
smtp_port = 25

; For Win32 only.
sendmail_from = skrzysiek08@gmail.com


Proszę o pomoc jestem pewien, że chodzi o wpisy w php.ini, tylko jakie to muszą być wpisy? a może chodzi o coś innego? proszę o pomoc.
Kszyhuu
http://www.w3schools.com/php/php_mail.asp

Zobacz ten skrypt i olej biedne książkowe skrypty testowe. winksmiley.jpg
Wild
Nie chodzi tutaj o skrypt tylko o ustawienia w pliku php.ini, ale dla pewności sprawdziłem skrypt ze strony i to samo mi wypluwa:
Kod
Warning: mail() [function.mail]: SMTP server response: 554 5.7.1 Sender address rejected: SERWER poczta.o2.pl WYMAGA UWIERZYTELNIENIA. Zobacz http://pomoc.o2.pl/poczta/autoryzacja/ i skonfiguruj poprawnie program pocztowy. in C:\Program Files\Apache Group\Apache2\htdocs\mailfrom.php on line 7
Mail Sent.


Klienta mam skonfigurowanego poprawnie, więc nie wiem czemu krzyczy, że "SERWER poczta.o2.pl WYMAGA UWIERZYTELNIENIA."?

U Was działa "mój" lub skrypt z TEJ STRONY
potreb
Proponuje ci zapoznanie się z phpmailer, mniej zabawy.
Ustawienie w php.ini dyrektyw nie koniecznie pozwoli ci na poprawne wysłanie emaila, musisz mieć chyba klienta poczty, żeby wysłać email. Z locala nie wyślesz, zrób test na jakimś serwerze.

Ps. jesteś pewny co do portu w gmailu?
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.