Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Formularz kontaktowy - email nie dochodzi.
Forum PHP.pl > Forum > Przedszkole
mateŁusz
A więc mam taki formularz kontaktowy:

kontakt.php
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5.  
  6. <form action="wyslij.php" method="post">
  7. Nick:
  8. <input type="text" name="nick" /><br />
  9. E-mail:
  10. <input type="text" name="mail" /><br />
  11. Tresc:<br />
  12. <textarea name="tresc" /></textarea><br />
  13. <input type="submit" value="Wyślij">
  14. </form>
  15. </body>
  16. </html>



wyslij.php

  1. <?
  2. $mail="mojemail@o2.pl";
  3. if($_POST['tresc'] && $_POST['mail'] && $_POST['nick']){
  4. $tresc = 'Tresc: '.$_POST['tresc'].' \nWysłał: '.$_POST['nick'].' email: '.$_POST['mail'];
  5. if (mail($mail, "Tytul wiadomosci", $tresc)){
  6. echo 'Mail został wysłany <a href="link">Powrót</a>';
  7. }else{
  8. echo 'Mail nie został wysłany <a href="link">Powrót</a>';
  9. }
  10. }else{
  11. echo'Proszę wypełnić wszystkie pola';
  12. }
  13. ?>


Po wypełnieniu formularza i naciśnięciu 'Wyślij' pisze, że mail został wysłany. Sprawa wygląda tak, iż te emaile nie dochodzą na wskazany adres email.
Patrzyłem na dwóch emailach 4 godziny temu i na żaden nie doszedł..
A więc. Co jest źle? Jak to naprawić?
jaslanin
sprawdziłeś czy nie trafiły do folderu spam?
mkamin
  1.  
  2.  
  3. <?
  4. $mail="mojemail@o2.pl";
  5. if($_POST['tresc'] && $_POST['mail'] && $_POST['nick']){...
  6.  
  7. @mail(" $mail","Header(tu wstaw swój naglowek) ","$tresc")
  8. or die('Nie udało się wysłać wiadomości');
  9. }...
  10.  
  11.  
mateŁusz
Cytat(jaslanin @ 4.11.2012, 09:07:03 ) *
sprawdziłeś czy nie trafiły do folderu spam?


Tak.


Cytat(mkamin @ 4.11.2012, 10:22:55 ) *
  1.  
  2.  
  3. <?
  4. $mail="mojemail@o2.pl";
  5. if($_POST['tresc'] && $_POST['mail'] && $_POST['nick']){...
  6.  
  7. @mail(" $mail","Header(tu wstaw swój naglowek) ","$tresc")
  8. or die('Nie udało się wysłać wiadomości');
  9. }...
  10.  
  11.  


Zobacze

#Działo.. coś zmieniłem i już nie działa haha.gif

/Dobra działa, jednego emaila wyśle to wysyła, jak drugiego wysyłam to już nie dochodzi.. Logika.

Jak przerobić ten kod, aby wysyłało pod MAILA PODANEGO W KODZIE, a nie pod email, który użytkownik wpisał w inpucie?
mkamin
  1. <input type="text" name="mail" />

jeśli tu dostajesz mail od klienta/usera to pamietaj że bedą 2 adresy mail

  1.  
  2. $mail="mojemail@o2.pl";
  3. //oraz
  4. $mail2=$_POST['mail'];
  5.  
mateŁusz
Teraz to w ogóle nic nie działa. Email przychodzi, ale pusty haha.gif

Wiesz co.. ja nie mam pojęcia już jak i co.
Input name="mail"
W wyślij.php jest
$mail = "example@o2.pl"

Myślałem, że bez względu co tam osoba wpisze to i tak będzie się wysyłać na email podany w zmiennej $mail w pliku wyslij.php

Można zrobić jakoś tak, aby nie było tego inputa w formularzu, ale żeby wysyłały się emaile na adres "example@o2.pl"?

Nie mam siły..

Mógłby ktoś przyrządzić ten plik 'wyslij.php' tak, aby działał? Bo działał, coś zmieniłem i już nie działa, a nie pamiętam jak to zrobiłem haha.gif
viking
To że maile nie dochodzą niekoniecznie musi być wina źle działajacego skryptu (w którym za dużo filozofii nie ma). Mogą serwery odrzucać z kilku powodów np SPF.
mateŁusz
Już dochodzą, ale puste : D
mkamin
  1. if (!empty($_POST['tresc']) && !empty($_POST['nick'])){
  2.  
  3. if(preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $_POST[email])){
  4.  
  5. $tresc="Treść wiadomości: \n $_POST[tresc] \n";
  6. $message = "Dane usera:\n nick: $_POST[nick]\n $tresc";
  7. $header = "From: $_POST[nick] <$_POST[email]>";
  8. @mail("mojemail@o2.pl","Formularz kontaktowy ze strony: ","$message","$header")
  9. or die('Nie udało się wysłać wiadomości');
  10.  
  11. echo "<strong>Dziękujemy za przeslanie wiadomości<br/><a href=\"index.php\">Powrót do strony głównej</a></strong>";
  12.  
  13. }else echo "<span style=\"color: #FF0000; text-align: center;\"><br />Podaj prawidłowy adres email</span><br><a href=\"index.php\">Powrót</a></strong>"; }
  14. else echo "<span style=\"color: #FF0000; text-align: center;\"><br />Wypełnij wszystkie pola formularza!</span><br><a href=\"index.php\">Powrót </a></strong>";

Jeśli nic nie skopałem to powinno działać...
mateŁusz
Cały czas zwraca

Cytat
Podaj prawidłowy adres email
Powrót
viking
[a-z]{2}
Przyjmuje tylko adresy .xx, dwuznakowe domeny.
mkamin
Z formularza nie usunąłeś mam nadzieję pola mail?
  1. <input type="text" name="mail" /><br />

jeśli pole jest musisz wpisać prawidłowy mail np
mojmail@costam.pl po to masz sprawdzanie poprawności
  1. ...if(preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $_POST[email])){...

i tez racja jak viking zauważył
elvis385
Witam serdecznie! Nie zakładam nowego tematu bo mam całkiem podobny problem, mianowicie mam formularz wraz z plikiem send.php i nie wysyła on wiadomości na podany adres. Na początku wszystko działało a potem z niewiadomych przyczyn odmówiło posłuszeństwa.
A teraz przy próbie wysłania formularza pokazuje się komunikat:
Kod
Parse error: syntax error, unexpected T_STRING in /www/z/o/u41848/public_html/send.php on line 11



Formularz

  1. <table align="center">
  2. <tr>
  3. <td align="center">
  4. <form action="send.php" method="post" name="kontakt">
  5. <div>
  6. <li><label for="nick">Imię i nazwisko: </label>
  7. <ul>
  8. <input class="text" id="imie" name="imie"
  9. type="text">
  10. </ul>
  11. </li>
  12. </div>
  13. <div>
  14. <li><label for="nick">Data przyjazdu: </label>
  15. <ul>
  16. <input class="text" id="przyjazdd"
  17. name="przyjazd" type="text">
  18. </ul>
  19. </li>
  20. </div>
  21. <div>
  22. <li><label for="nick">Data odjazdu:</label>
  23. <ul>
  24. <input class="text" id="odjazd" name="odjazd"
  25. type="text">
  26. </ul>
  27. </li>
  28. </div>
  29. <div>
  30. <li><label for="temat">Typ pokoju: </label>
  31. <ul>
  32. <select name="pokoj" class="text"
  33. id="pokoj">
  34. <option>-------------Typ pokoju------------</option>
  35. <option value="Jednoosobowy">Jednoosobowy</option>
  36. <option value="Dwuosobowy">Dwuosobowy</option>
  37. <option value="Apartament">Apartament</option>
  38. </select>
  39. </ul>
  40. </li>
  41. </div>
  42. <div>
  43. <li><label for="mail">Liczba osób: </label>
  44. <ul>
  45. <input class="text" id="osoby" name="osoby"
  46. type="text">
  47. </ul>
  48. </li>
  49. </div>
  50. <div>
  51. <li><label for="mail">Telefon: </label>
  52. <ul>
  53. <input class="text" id="telefon" name="telefon"
  54. type="text">
  55. </ul>
  56. </li>
  57. </div>
  58. <div>
  59. <li><label for="tresc">E-mail: </label>
  60. <ul>
  61. <input class="text" id="email" name="email"
  62. type="text">
  63. </ul>
  64. </li>
  65. </div>
  66. <div>
  67. <ul>
  68. <input value="Wyślij" align="left"
  69. type="submit"><input value="Reset"
  70. align="right" type="reset">
  71. </ul>
  72. </div>
  73. </form>
  74. </td>
  75. </tr>
  76. </tbody>
  77. </table>



send.php


  1. <?php
  2. if (!imie || !przyjazd || !odjazd || !pokoj || !osoby || !telefon || !email)
  3. {
  4. echo "Wypełnij wszyskie pola.";
  5. }
  6. $wiadomosc =
  7. "Imie i nazwisko:".$_POST['imie']."
  8. "Data przyjazdu:".$_POST['przyjazd']."
  9. "Data odjazdu:".$_POST['odjazd']."
  10. "Typ pokoju:".$_POST['pokoj']."
  11. "Liczba osób:".$_POST['osoby']."
  12. "Telefon:".$_POST['telefon']."
  13. "E-mail:".$_POST['email']."";
  14. $tematyka = "REZERWACJA - ".$temat;
  15. mail ("mój-meil@wp.pl", $tematyka, $wiadomosc );
  16. echo "Dziękujemy za rezerwacje, potwierdzenie odeślemy meilem.";
  17. echo "Imie i nazwisko: <strong>".$imie."</strong><ul />";
  18. echo "Data przyjazdu: <strong>".$przyjazd."</strong><ul />";
  19. echo "Data odjazdu: <strong>".$odjazd."</strong><ul />";
  20. echo "Typ pokoju: <strong>".$pokoj."</strong><ul />";
  21. echo "Liczba osób: <strong>".$osoby."</strong><ul />";
  22. echo "Telefon: <strong>".$telefon."</strong><ul />";
  23. echo "E-mail: <strong>".$email."</strong><ul />";
  24. ?>


Co z nim jest nie tak? Prosze o pomoc.
mkamin
Spróbuj tak:
  1.  
  2. $wiadomosc = "
  3. Imie i nazwisko: .$_POST['imie'].\n
  4. Data przyjazdu: .$_POST['przyjazd'].\n
  5. Data odjazdu: .$_POST['odjazd'].\n
  6. Typ pokoju: .$_POST['pokoj'].\n
  7. Liczba osób: .$_POST['osoby'].\n
  8. Telefon: .$_POST['telefon'].\n
  9. E-mail: .$_POST['email'].
  10.  
  11. ";
  12.  
mateŁusz

/\Takie wypełnienie jest prawidłowe?



  1. @mail("jakisEmail@o2.pl","Formularz kontaktowy ze strony: ","$message","$header")
mkamin
Tak. Sprawdź czy przechodzi mail bez sprawdzania poprawności

  1. if (!empty($_POST['tresc']) && !empty($_POST['nick'])){
  2.  
  3. $tresc="Treść wiadomości: \n $_POST[tresc] \n";
  4. $message = "Dane usera:\n nick: $_POST[nick]\n $tresc";
  5. $header = "From: $_POST[nick] <$_POST[email]>";
  6. @mail("mojemail@o2.pl","Formularz kontaktowy ze strony: ","$message","$header")
  7. or die('Nie udało się wysłać wiadomości');
  8.  
  9. echo "<strong>Dziękujemy za przeslanie wiadomości<br/><a href=\"index.php\">Powrót do strony głównej</a></strong>";
  10.  
  11. }
  12. else echo "<span style=\"color: #FF0000; text-align: center;\"><br />Wypełnij wszystkie pola formularza!</span><br><a href=\"index.php\">Powrót </a></strong>";

mateŁusz
Cytat
Dziękujemy za przeslanie wiadomości
Powrót do strony głównej


Wysyła się.

Byłby ktoś wstanie przerobić formularz tak, aby nie było inputa "Email". Uzupełniałoby się tylko "Nick" i "Treść" i email od razu by się wysyłał na JakisEmail@o2.pl ?
mkamin
Cytat(mateŁusz @ 4.11.2012, 13:49:50 ) *
Wysyła się.

Byłby ktoś wstanie przerobić formularz tak, aby nie było inputa "Email". Uzupełniałoby się tylko "Nick" i "Treść" i email od razu by się wysyłał na JakisEmail@o2.pl ?


zmień
  1. @mail("JakisEmail@o2.pl","Formularz kontaktowy ze strony: ","$message","$header")

na
  1. @mail("JakisEmail@o2.pl","Formularz kontaktowy ze strony: ","$message","$header")

a z formularza usuń

  1. E-mail:
  2. <input type="text" name="mail" /><br />
mateŁusz
Bóg Ci w dzieciach wynagrodzi biggrin.gif
Czy działa tak jak trzeba to zobaczymy jak email przyjdzie smile.gif
mkamin
i jeszcze został
  1.  
  2.  
  3. $header = "From: $_POST[nick] ";
  4.  
mateŁusz
Wiem, wiem.. poprawiłem to od razu smile.gif
Jakbym chciał jeszcze, np. przekazywać informacje z inputa "osobie" to tak zrobić:

  1. $message = "Dane usera:\n nick: $_POST[nick]\n $tresc\n $osobie";


? smile.gif
mkamin
Dodajesz do formularza pole
  1. o Sobie: <textarea name="oSobie" /></textarea>


i odbierasz

  1. $osobie= $_POST['oSobie'] ;
  2.  
  3. $message = "Dane usera:\n nick: $_POST[nick]\n $tresc\n $osobie";
mateŁusz
Rozumiem.
Dziękuję..
"pomógł" porozdawane biggrin.gif
Aevon
Witam, nie wiem czy powinienem zakładac nowy temat, czy raczej się dopisać skoro mam podobny problem.

Sprawa wygląda tak, ( wiem wiem zgroza tongue.gif ) ściągnąłem template strony internetowej i chciałem ją przerobić, jako, że moje kodowanie i rozumienie zasad działania php jest zerowe smile.gif z html i css metodą prób i błędów sobie poradzę, trochę namieszam, ale dam rade tongue.gif

Otóż, wszystko fajnie, szablon mi się podoba itd, można go w pełni edytować, ale nie mam zielonego pojęcia jak ustawić "Contact Form" żeby działał, od razu mówie, że trzeba mi tłłumaczyć dość łopatologicznie smile.gif maile nie dochodzą, nawet nie wiem czy powinny biggrin.gif

Z góry dziękuję za pomoc smile.gif

CODE
<?php
$owner_email = $_POST["owner_email"];
$headers = 'From:' . $_POST["email"];
$subject = 'A message from your site visitor ' . $_POST["name"];
$messageBody = "";

if($_POST['name']!='nope'){
$messageBody .= '<p>Visitor: ' . $_POST["name"] . '</p>' . "\n";
$messageBody .= '<br>' . "\n";
}
if($_POST['email']!='nope'){
$messageBody .= '<p>Email Address: ' . $_POST['email'] . '</p>' . "\n";
$messageBody .= '<br>' . "\n";
}else{
$headers = '';
}
if($_POST['state']!='nope'){
$messageBody .= '<p>State: ' . $_POST['state'] . '</p>' . "\n";
$messageBody .= '<br>' . "\n";
}
if($_POST['phone']!='nope'){
$messageBody .= '<p>Phone Number: ' . $_POST['phone'] . '</p>' . "\n";
$messageBody .= '<br>' . "\n";
}
if($_POST['fax']!='nope'){
$messageBody .= '<p>Fax Number: ' . $_POST['fax'] . '</p>' . "\n";
$messageBody .= '<br>' . "\n";
}
if($_POST['message']!='nope'){
$messageBody .= '<p>Message: ' . $_POST['message'] . '</p>' . "\n";
}

if($_POST["stripHTML"] == 'true'){
$messageBody = strip_tags($messageBody);
}

try{
if(!mail($owner_email, $subject, $messageBody, $headers)){
throw new Exception('mail failed');
}else{
echo 'mail sent';
}
}catch(Exception $e){
echo $e->getMessage() ."\n";
}
?>


mam jeszcze plik ashx smile.gif

CODE
<%@ WebHandler Language="C#" Class="Handler" Debug="true" %>

using System;
using System.Web;
using System.Net.Mail;
using System.Text.RegularExpressions;

public class Handler : IHttpHandler {
public void ProcessRequest (HttpContext context) {
SmtpClient mailClient = new SmtpClient(context.Request.Form.Get("smtpMailServer"));
string owner_email = context.Request.Form.Get("owner_email");
string subject = "A message from your site visitor " + context.Request.Form.Get("name");
string email = context.Request.Form.Get("email");
string messageBody = "";

messageBody += "<p>Visitor: " + context.Request.Form.Get("name") + "</p>\n";
messageBody += "<br>\n";
messageBody += "<p>Email Address: " + context.Request.Form.Get("email") + "</p>\n";
messageBody += "<br>\n";
messageBody += "<p>Phone Number: " + context.Request.Form.Get("phone") + "</p>\n";
messageBody += "<br>\n";
messageBody += "<p>Message: " + context.Request.Form.Get("message") + "</p>\n";


MailMessage message = new MailMessage();

try{
message.From = new MailAddress(email.ToString());
}catch (FormatException e) {
context.Response.Write(e.Message);
}

message.To.Add(owner_email);
message.Subject = subject;
if(context.Request.Form.Get("stripHTML") == "true"){
message.IsBodyHtml = false;
messageBody = Regex.Replace(messageBody, "<.*?>", string.Empty);
}else{
message.IsBodyHtml = true;
}
message.Body = messageBody;

try{
mailClient.Send(message);
}catch (SmtpException e) {
context.Response.Write("mail failed");
}
context.Response.Write("mail sent");
}

public bool IsReusable {
get {
return false;
}
}
}


no i miejsce w index.html gdzie ( tak myślę ) powinno się znajdować jakiekolwiek odniesienie wink.gif

CODE
<form action="MailHandler.php" id="ContactForm">
<div class="success"> Contact form submitted!&nbsp;We will be in touch soon.</div>
<fieldset class="left">
<div class="block">
<label class="name padRight3">
<span class="title1">Name:</span>
<span class="bg"><input type="text" value="" class="input"></span>
<span class="error">*To nie jest poprawne imię.</span> <span class="empty">*This field is required.</span> </label>
<label class="email">
<span class="title1">Email:</span>
<span class="bg"><input type="email" value="" class="input"></span>
<span class="error">*To nie jest poprawny e-mail.</span> <span class="empty">*This field is required.</span></label>

<label class="phone">
<span class="title1">Phone:</span>
<span class="bg"><input type="tel" value="" class="input"></span>
<span class="error">*To nie jest poprawny telefon.</span> <span class="empty">*This field is required.</span> </label>
</div>

<div class="block">
<label class="message">
<span class="title1">Message:</span>
<span class="bg"><textarea rows="1" cols="2"></textarea></span>
<span class="error">Hmm, I guess your message is too short.</span> <span class="empty">*This field is required.</span> </label>
</div>
<div class="formButtons">
<div class="formBtn">
<a href="#" data-type="submit" class="moreButton">Send</a>
</div>
<div class="formBtn">
<a href="#" data-type="reset" class="moreButton">Clear</a>
</div>
</div>
</fieldset>
</form>
mateŁusz
3,5h, a emaila nadal w skrzynce nie widać..
viking
Bo widzisz. Wiesz chociaż na przyszłość że błędów się nie ukrywa. Wywal @ i zobacz co zwraca.
elvis385
Cytat(mkamin @ 4.11.2012, 13:21:36 ) *
Spróbuj tak:
  1.  
  2. $wiadomosc = "
  3. Imie i nazwisko: .$_POST['imie'].\n
  4. Data przyjazdu: .$_POST['przyjazd'].\n
  5. Data odjazdu: .$_POST['odjazd'].\n
  6. Typ pokoju: .$_POST['pokoj'].\n
  7. Liczba osób: .$_POST['osoby'].\n
  8. Telefon: .$_POST['telefon'].\n
  9. E-mail: .$_POST['email'].
  10.  
  11. ";
  12.  


Spróbowałem i niezależnie czy wypełniłem pola czy też nie pokazuje się komunikat:
Cytat
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /www/h/o/u2935/public_html/send.php on line 8.
Exemu
Witam! Nie zakładam nowego tematu, mam taki sam problem:

Kod
<html>
<head>
  <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" />
  <meta name="Description" content=" [wstaw tu opis strony] " />
  <meta name="Keywords" content=" [wstaw tu slowa kluczowe] " />
  <meta name="Author" content=" [dane autora] " />
  <meta name="Generator" content="kED" />

  <title>Recenzje PBF / Kontakt</title>

  <link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<div class="cale" style="background:rgba(255,255,255,0.4)">
<div class="logo">Recenzje PBF</div>
<div class="menu"><a href="index.html">Strona Główna </a>|<a href="recenzje.html"> Recenzje </a>|<a href="kontakt.html"> Kontakt</a></div><br />
<div class="tekst"><h2>Kontakt</h2>
<form action="go.php" method="POST"><fieldset><legend>Skontaktuj się ze mną!</legend>
Imię: <input name="imie" /><br />
Nazwisko: <input name="nazwisko" /><br />
Wiadomość: <textarea cols="50" rows="10" name="wiadomosc"></textarea><br />
<input type="submit" value="Wyślij" /></fieldset></form></div><br />
<div class="stopka">Copyright ? by recenzjepbf.cba.pl</div>
</div>
</body>
</html>


go.php
Kod
<html>
<body>
<?php
$wiadomosc = $_POST['wiadomosc'];
$imie = $_POST['imie'];
$nazwisko = $_POST['nazwisko'];
$to = 'exemu@op.pl';
$error = 'Wystąpił błąd.';

if(mail($to, "Nowa Wiadomość", $wiadomosc))
{
echo 'Wiadomość wysłana pomyślnie';
}
    else
{
echo $error;
};
?>
</body>
</html>



Niby pisze, że wysłano wiadomość, ale nie dochodzi. Serwis mam na cba.pl.

Aevon, a gdzie method?
Kod
<form action="MailHandler.php" id="ContactForm">
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.