Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML]Wysyłanie email skryptem php
Forum PHP.pl > Forum > Przedszkole
jakis_login
Witam
Chcę zrobić na stronie aby można było wysłać meila bez klienta pocztowego i coś mi nie działa;( Jestem początkującym więc proszę o wyrozumiałość. Oto mój kod:

  1. <div>
  2. <form action="skrypt.php" method="post">
  3. wpisz email<br/><input type="text" name="email" /><br /><br/>
  4. tresc maila<br/><textarea name="content" cols="30" rows="6"></textarea>
  5. <input type="submit" value="wyslij" />
  6. </form>
  7. </div>

a w drugim pliku skrypt.php mam:

  1. <?PHP
  2. $adresat = "mojadres@wp.pl"; // pod ten adres zostanie wysłana wiadomosc, jest to adres przykładowy
  3. @$email = $_POST['email'];
  4. @$content = $_POST['content'];
  5.  
  6. $header = "From: ktos@serwer.pl \nContent-Type:".
  7. 'text/plain;charset="iso-8859-2"'.
  8. "\nContent-Transfer-Encoding: 8bit";
  9.  
  10. if (mail("$adresat", "Jakis temat", $content, $header))
  11. echo "działa";
  12. else
  13. echo "nie wysłano";
  14. ?>


a oto moj blad: Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\Program Files (x86)\WebServ\httpd\wysylanieMeilaZphp\skrypt.php on line 10
nie wysłano


Uruchamiam to na localu. Dodam, ze pliki umieszczałem na darmowym serverze i także nie działało - pokazywało komunikat "nie wysłano".
bubus_s
Witam ja korzystam z takiej wersji działa bez żadnych problemów
Jak by coś nie działało pisz.
Mam nadzieję że wszystko jest zrozumiałe.
  1. <?php
  2. // Naglowki mozna sformatowac tez w ten sposob.
  3. $naglowki = "Reply-to: moj@mail.pl <moj@mail.pl>".PHP_EOL;
  4. $naglowki .= "From: moj@mail.pl <moj@mail.pl>".PHP_EOL;
  5. $naglowki .= "MIME-Version: 1.0".PHP_EOL;
  6. $naglowki .= "Content-type: text/html; charset=iso-8859-2".PHP_EOL;
  7.  
  8. //Wiadomość najczęściej jest generowana przed wywołaniem funkcji
  9. $wiadomosc = '<html>
  10. <head>
  11. <title>Wiadomość e-mail</title>
  12. </head>
  13. <body>
  14. <p><b>Treść wiadomości</b>: To jest treść wiadomości z formatowaniem HTML.</p>
  15. </body>
  16. </html>';
  17.  
  18.  
  19. if(mail('jan_testowy@serwer.pl', 'Witaj', $wiadomosc, $naglowki))
  20. {
  21. echo 'Wiadomość została wysłana';
  22. }
  23. ?>
jakis_login
Nie no nadal wyskakuje mi ten błąd: Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\Program Files (x86)\WebServ\httpd\wysylanieMeilaZphp\skrypt.php on line 19
amii
Lokalnie Ci nie zadziała bo nie masz skonfigurowanego serwera SMTP
jakis_login
no dobra wrzuciłem ten kod co zapodał bubus_s na server i pojawia sie pusta strona ;/
bubus_s
Hmm kod powinien działać w razie problemów pisz pomogęwinksmiley.jpg
Jak wpiszesz adres e-mail. i wrzucisz to na serwer następnie odpalisz
powinien wyskoczyć napis"Wiadomość została wysłana"
Sprawdzalem u siebie:)
  1. #
  2. if(mail('(tu wpisz swoje e-mail', 'Witaj', $wiadomosc, $naglowki))

jakis_login
Nadal nic, tylko pusta strona. Podejrzewam, że to coś z ustawieniami servera bo wszedłem na stronę mojego serva (vixo.pl - darmowy) i doczytałem, że do dodania konta email potrzebne jest konto premium a ja korzystam z darmowego <- czy to jest ta przyczyna? W takim razie jak skonfigurować na localu?
Kiki
Żeby wysłać maila funkcją mail() nie potrzebujesz konta mailowego. Być może ta funkcja jest zablokowana na vixo.pl - niektóre darmowe serwery tak robią, żeby spamerzy nie wykorzystywali. Możesz poszukać innego darmowego, na którym będzie to bez problemu działało. Chyba na http://www.000webhost.com/

Możesz spróbować zainstalować sobie np. PHPmailer i wysyłać maile przez SMTP łącząc się z zewnętrznym kontem mailowym, można sobie założyć dodatkowe np. na gmailu i powinno tak działać.

Pamiętaj też, że gdy pobierasz dane z formularza, to przydało by się sprawdzić sprawdzić ich poprawność, tzn. w tym przypadku czy ktoś wpisał mail poprawnie. Możesz skorzystać z wyrażeń regularnych, albo prościej z filter_var. W linku jest przykład użycia wraz z opisem.
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.