Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [html][php] jak stworzyc formularz pocztowy
Forum PHP.pl > Forum > Przedszkole
Oscar_83
Kto mi pomoże stworzyć prosty formularz pocztowy który wysyła bez programu pocztowego na kompie (z pozycji stronki) emaila pod podany adres:

mam taki kod:
  1. <table border="1" width="90%" cellspacing="3" cellapdding="3" align="center">
  2. <tr>
  3. <td bgcolor="#CCE6FF" colspan="2" align="center">Formularz kontaktowy<br>&nbsp</td>
  4. </tr>
  5. <tr>
  6. <td bgcolor="#CCE6FF" width="35%" align="right">Rodzaj &nbsp<br> zapytania: &nbsp</td>
  7. <td bgcolor="#CCE6FF" width="55%">
  8. <select name="zapytanie" class="select">
  9. <option value="zukos220@interia.pl" style="background-color: #CCE6FF">dom</option>
  10. <option value="zukos1@wp.pl" style="background-color: #CCE6FF">praca</option>
  11. </select> <br />
  12. </td>
  13. </tr>
  14. <tr>
  15. <td bgcolor="#CCE6FF" align="right">Imię i nazwisko: &nbsp</td>
  16. <td bgcolor="#CCE6FF">
  17. <input type="text" style="background-color: #8FA0B0" name="imie">
  18. </td>
  19. </tr>
  20. <tr>
  21. <td bgcolor="#CCE6FF" align="right">e-mail: &nbsp</td>
  22. <td bgcolor="#CCE6FF">
  23. <input type="text" style="background-color: #8FA0B0" name="email">
  24. </td>
  25. </tr>
  26. <tr>
  27. <td bgcolor="#CCE6FF" align="right">Treść &nbsp<br> wiadomości: &nbsp</td>
  28. <td bgcolor="#CCE6FF">
  29. <textarea style="background-color: #8FA0B0" name="tresc" cols="40%" rows="5"></textarea>
  30. </td>
  31. </tr>
  32. <tr>
  33. <td bgcolor="#CCE6FF" colspan="2" align="center">
  34. <input type="submit" name="SUBMIT" value="Wyślij">
  35. </td>
  36. </tr>
  37. </table>


Czy bez php nie da się tego zrobić? Jeśli za pomocą php tylko to z jakiej funkcji najlepiej skorzystać?
Cysiaczek
Najlepiej z funkcji mail()" title="Zobacz w manualu PHP" target="_manual

Pozdrawiam.
Oscar_83
A czy jak skorzystam z tej funkcji to nie będzie musiał mieć użytkownik czegoś u siebie na kompie żeby wysłać z pozycji tej stronki emaila?

bo tu napisane jest:
"Aby funkcje poczty elektronicznej były dostępne, PHP musi mieć dostęp w czasie kompilacji do binariów sendmail w Twoim systemie operacyjnym."

a potem:

By używać tych funkcji, nie trzeba niczego instalować. Są one częścią jądra PHP.
kossa
Cytat
PHP musi mieć dostęp w czasie kompilacji do binariów sendmail w Twoim systemie operacyjnym


tak, ale php jest po stronie serwera a nie po stronie klienta (czylu internauty)

musisz mieć serwer obsługujący php

Łukasz
Oscar_83
rozumiem
a jest gdzieś opisane jak stosuje się tą funkcję mail()?
pozdrawiam i z góry dziękuję za pomoc
Cysiaczek
Dałem Ci link do opisu. Pomyślałem jednak przed chwilą, że lepiej użyj biblioteki phpmailer
http://phpmailer.sourceforge.net/

Masz tam przykłady użycia - bardzo proste.

Pozdrawiam.
Oscar_83
hmm tylko jak to zrobić żeby tak jak w moim przypadku z listy rozwijanej wybrać jeden z dwóch adresów email na które wiadomość ma być wysłana.

I gdzie te wszystkie dane się wpisuje? w pliku jakimś oddzielnym z którym się stronka łączy, czy normalnie w źródle kodu?? Bo jak w źródle kodu to przecież można hasło podejrzeć.
Cysiaczek
No przeciez jak masz formularz, to w select wpisujesz nazwy adresów i skrypt php je odbiera i po prostu wysyła na podanego maila.
O co Ci chodzi z tym hasłem? Nie musisz podawać.
Oscar_83
bo w tym linku co mi podałeś było

  1. <?php
  2. require("class.phpmailer.php");
  3.  
  4. $mail = new PHPMailer();
  5.  
  6. $mail->IsSMTP();  // send via SMTP
  7. $mail->Host  = "smtp1.site.com;smtp2.site.com"; // SMTP servers
  8. $mail->SMTPAuth = true;  // turn on SMTP authentication
  9. $mail->Username = "jswan"; // SMTP username
  10. $mail->Password = "secret"; // SMTP password
  11.  
  12. $mail->From  = "from@email.com";
  13. $mail->FromName = "Mailer";
  14. $mail->AddAddress("josh@site.com","Josh Adams"); 
  15. $mail->AddAddress("ellen@site.com");  // optional name
  16. $mail->AddReplyTo("info@site.com","Information");
  17.  
  18. $mail->WordWrap = 50; // set word wrap
  19. $mail->AddAttachment("/var/tmp/file.tar.gz"); // attachment
  20. $mail->AddAttachment("/tmp/image.jpg", "new.jpg"); 
  21. $mail->IsHTML(true);  // send as HTML
  22.  
  23. $mail->Subject = "Here is the subject";
  24. $mail->Body  = "This is the <b>HTML body</b>";
  25. $mail->AltBody = "This is the text-only body";
  26.  
  27. if(!$mail->Send())
  28. {
  29.  echo "Message was not sent <p>";
  30.  echo "Mailer Error: " . $mail->ErrorInfo;
  31.  exit;
  32. }
  33.  
  34. echo "Message has been sent";
  35. ?>


i tam było właśnie hasło
  1. <?php
  2. $mail->Password = "secret"; // SMTP password
  3. ?>


czyli trzeba tu podać. I dlatego pytałem czy to wszystko co wkleiłem znajduje się w jakimś dodatkowym pliku, który trzeba wrzucić do folderu w którym znajduje się stronka, czy wypisać to w źródle (w kodzie stronki)

sorki za te pytania (ale chciałbym wszystkiego dopytać). pozdrawiam i miej cierpliwość do mojej osoby winksmiley.jpg

oki już mniej więcej wiem. Teraz idę spać a jutro jeszcze poszukam jak w tym kodzie który mam wrzucić zmienną która łączy się z plikiem wysyłającym wiadomość.
Cysiaczek
Robisz jak chcesz. Dołączasz biblioteke, a potem już w dalszej częsci piszesz kod. Czy formularz i skrypt wysyłający mial będą w tym samym pliku, to już Twoja decyzja. Hasła nikt nie podejrzy, chyba, ze dostanie się na serwer.

Pozdrawiam
Oscar_83
Dzięki bardzo za porady.
A może wiesz jak do tego kodu który mam:
  1. <table border="1" width="90%" cellspacing="3" cellapdding="3" align="center">
  2. <tr>
  3. <td bgcolor="#CCE6FF" colspan="2" align="center">Formularz kontaktowy<br>&nbsp</td>
  4. </tr>
  5. <tr>
  6. <td bgcolor="#CCE6FF" width="35%" align="right">Rodzaj &nbsp<br> zapytania: &nbsp</td>
  7. <td bgcolor="#CCE6FF" width="55%">
  8. <select name="zapytanie" class="select">
  9. <option value="zukos220@interia.pl" style="background-color: #CCE6FF">dom</option>
  10. <option value="zukos1@wp.pl" style="background-color: #CCE6FF">praca</option>
  11. </select> <br />
  12. </td>
  13. </tr>
  14. <tr>
  15. <td bgcolor="#CCE6FF" align="right">Imię i nazwisko: &nbsp</td>
  16. <td bgcolor="#CCE6FF">
  17. <input type="text" style="background-color: #8FA0B0" name="imie">
  18. </td>
  19. </tr>
  20. <tr>
  21. <td bgcolor="#CCE6FF" align="right">e-mail: &nbsp</td>
  22. <td bgcolor="#CCE6FF">
  23. <input type="text" style="background-color: #8FA0B0" name="email">
  24. </td>
  25. </tr>
  26. <tr>
  27. <td bgcolor="#CCE6FF" align="right">Treść &nbsp<br> wiadomości: &nbsp</td>
  28. <td bgcolor="#CCE6FF">
  29. <textarea style="background-color: #8FA0B0" name="tresc" cols="40%" rows="5"></textarea>
  30. </td>
  31. </tr>
  32. <tr>
  33. <td bgcolor="#CCE6FF" colspan="2" align="center">
  34. <input type="submit" name="SUBMIT" value="Wyślij">
  35. </td>
  36. </tr>
  37. </table>


dołączyć tą bibliotekę? przed tym kodem musze użyć funkcji łączącej z tą biblioteką?

czy to chodzi o wstawienie tego
[/php]ini_set("include_path", ".:/path/to/phpmailer/dir");

Or this:

$mail->PluginDir = "/path/to/phpmailer/dir";[php]

no dobra już Cię nie męcze, jutro poszukam opisu w języku polskim to powinienem dojść.
Dzięki jeszcze raz za pomoc i pozdrawiam.
Cysiaczek
Stwórz plik o nazwie send.php. Umieść w nim kod, który podałeś wyżej (ten z użyciem, biblioteki)
Teraz w tagu <form> daj ustaw atrybut action="send.php" (nie wiem jaką masz tam konkretnie ścieżkę).
Masz w swoim formularzu z tego, co widzę pole zatytuowane tresc.
Wróć do pliku send.php. Odbierz w nim formularz
  1. <?php
  2. $tresc=$_POST['tresc'];
  3. //analogicznie pozostale pola formularza
  4. ?>


Podstaw te zmienne do obiektu phpmailer
  1. <?php
  2. $mail->Body  = $tresc;
  3. // itd...
  4. ?>


Tyle. Mail zostanie wysłany.

Nie da się prosciej.
Pozdrawiam
in5ane
Ja ci to napiszę całkiem:

  1. twój kod


  1. <?php
  2.  
  3. $imie = $_POST['imie'];
  4. $email = $_POST['email'];
  5. $tresc = $_POST['tresc'];
  6. $zapytanie = $_POST['tresc'];
  7.  
  8.  if ($imie && $email && $tresc && $$zapytanie) { // tutaj wypisujesz wszystkie zmienne z formularza
  9. $text = "
  10.  Imie: $imie
  11.  
  12.  E-Mail: $email
  13.  
  14.  Tresc: $tresc
  15.  
  16.  ---------------
  17.  Wysłano: ".date("d.m.Y - H:i:s")."";
  18.  
  19. $headers = "Content-type: text/plain; charset=iso-8859-2";
  20.  
  21.  @mail("$zapytanie","E-Mail ze strony",$text,$headers); // tutaj wpisujesz email, następnie temat wiadomości
  22.  echo 'E-Mail wysłano poprawnie!';
  23. } elseif((empty($imie) or empty($email) or empty($zapytanie) or empty($tresc)) and (isset($imie) or isset($email) or isset($zapytanie) or isset($tresc))) {
  24.  echo 'Wypełnij poprawnie formularz!';
  25. }
  26.  
  27. ?>



Po co kombinować. Wystarczy w ten sposób co ja Ci pokazałem.
kosmowariat
można to zrobić bez php ;p wystarczy jak atrybut action znacznika form wstawić adres email

  1. <form action='moj_mail@cos.pl'>
  2. </form>
Oscar_83
a da się żeby wybierać albo na jeden email żeby wysyłał albo na drugi? tak jak ja to mam zrobione?
in5ane
Ja ci podałem dobry kod.

Umieszczasz:
Kod
KOD PHP

<form method="post">
KOD HTML TWÓJ
</form>
Oscar_83
Dzięki pomocy in5ane'a mam taki kod:

  1. <?php
  2.  
  3. $imie = $_POST['imie'];
  4. $email = $_POST['email'];
  5. $tresc = $_POST['tresc'];
  6. $zapytanie = $_POST['tresc'];
  7.  
  8.  if ($imie && $email && $tresc && $zapytanie) {
  9. $text = "
  10.  Imie: $imie
  11.  
  12.  E-Mail: $email
  13.  
  14.  Tresc: $tresc
  15.  
  16.  ---------------
  17.  Wysłano: ".date("d.m.Y - H:i:s")."";
  18.  
  19. $headers = "Content-type: text/plain; charset=windows-1250";
  20.  
  21.  @mail("$zapytanie","E-Mail ze strony Optal Developer",$text,$headers);
  22.  ?> <font color="green"><?php
  23.  echo 'E-Mail wysłano poprawnie!';?></font><?php
  24. } elseif((empty($imie) or empty($email) or empty($zapytanie) or empty($tresc)) and (isset($imie) or isset($email) or isset($zapytanie) or isset($tresc))) {
  25.  ?> <font color="green"><br><?php echo 'Wypełnij wszystkie pola formularza!';
  26. ?></font><?php
  27. }
  28.  
  29. ?>

  1. <form method="post">
  2. <table border="1" width="90%" cellspacing="1" cellapdding="3" align="center">
  3. <tr>
  4. <td bgcolor="#CCE6FF" colspan="2" align="center">Formularz kontaktowy<br>&nbsp</td>
  5. </tr>
  6. <tr>
  7. <td bgcolor="#CCE6FF" width="35%" align="right">Rodzaj &nbsp<br> zapytania: &nbsp</td>
  8. <td bgcolor="#CCE6FF" width="55%">
  9. <select name="zapytanie" class="select">
  10. <option value="zukos220@interia.pl" style="background-color: #CCE6FF">dział sprzedaży</option>
  11. <option value="zukos1@wp.pl" style="background-color: #CCE6FF">sekretariat</option>
  12. </select> <br />
  13. </td>
  14. </tr>
  15. <tr>
  16. <td bgcolor="#CCE6FF" align="right">Imię i nazwisko: &nbsp</td>
  17. <td bgcolor="#CCE6FF">
  18. <input type="text" style="background-color: #8FA0B0" name="imie">
  19. </td>
  20. </tr>
  21. <tr>
  22. <td bgcolor="#CCE6FF" align="right">e-mail: &nbsp</td>
  23. <td bgcolor="#CCE6FF">
  24. <input type="text" style="background-color: #8FA0B0" name="email">
  25. </td>
  26. </tr>
  27. <tr>
  28. <td bgcolor="#CCE6FF" align="right">Treść &nbsp<br> wiadomości: &nbsp</td>
  29. <td bgcolor="#CCE6FF">
  30. <textarea style="background-color: #8FA0B0" name="tresc" cols="40%" rows="5"></textarea>
  31. </td>
  32. </tr>
  33. <tr>
  34. <td bgcolor="#CCE6FF" colspan="2" align="center">
  35. <input type="submit" name="SUBMIT" value="Wyślij">
  36. </td>
  37. </tr>
  38. </table>
  39. </form>


zmieniłem tylko kodowanie na windows-1250 bo takie mam na całej stronie. Teraz wszystko niby działa dobrze, wypisuje że wysłano emaila, tylko że emaile wcale nie dochodzą :/

a może mam zablokowaną funkcje mail? więcie może czy w ovh darmowym jest zablokowana ta funkcja?
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.