Contact formulier klaar: maar mail komt niet aan!

Status
Niet open voor verdere reacties.

Eleen

Gebruiker
Lid geworden
17 mrt 2009
Berichten
6
Ik heb al héél veel html codes geprobeerd en het contact formulier ziet er helemaal goed en compleet uit, ik kan alles invullen etc. maar als ik op versturen klik dan gaat het zogenaamd weg, alleen krijg ik het steeds maar niet in mijn mailbox zelf! Ik heb echt geen idee wat ik fout doe.... :confused: lijkt wel of de mail daarna verdwenen is... Misschien weet iemand waar het aan kan liggen...:)
 
Kun je de HTML en/of PHP code eens laten zien?

Dan weten we iets meer :)
 
Oké, hier is één van de velen die ik heb geprobeerd (op het laatst -onder het contactformulier- krijg ik veel tekst): hier issie!

<?php
$ip = $_SERVER['REMOTE_ADDR'];
if (!$_POST['SUBMIT'])
{
?>
U kunt contact met me opnemen, door het invullen van volgend formulier:
<form method="POST">
<table border="0">
<tr>
<td>Uw naam:</td>
<td><input type="TEXT" name="naam"></td>
</tr>
<tr>
<td>Uw emailadres:</td>
<td><input type="TEXT" name="email"></td>
</tr>
<tr>
<td>Onderwerp:</td>
<td><input type="TEXT" name="onderwerp"></td>
</tr>
<tr>
<td>Bericht:</td>
<td><textarea name="bericht" cols="64" rows="12"></textarea></td>
</tr>
<tr>
<td colspan="2"><input type="SUBMIT" name="SUBMIT" value="Verstuur"></td>
</tr>
</table>
</form>
<?php
} else {//niet gepost
$naam = addslashes($_POST['naam']);
$email = addslashes($_POST["info@bladibla.nl]);
$onderwerp = addslashes($_POST['onderwerp']);
$bericht = nl2br(addslashes($_POST['bericht']));
if (empty($bericht) || empty($email) || empty($onderwerp) || empty($bericht))
{
echo "Je hebt 1 of meer velden niet ingevuld!";
exit; //stoppen met uitvoer van script
}
$verzendbericht = "Dit is een bericht afkomstig vanaf StijnZone.be. Het is verzonden door ".$naam." vanaf IP ".$ip." en met emailadres ".$email.".<br>
Dit is het bericht:<br>
".$bericht;
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "X-Priority: 3\r\n";
$headers .= "X-MSMail-Priority: Normal\r\n";
$headers .= "X-Mailer: php\r\n";
$headers .= "From: \"".$naam."\" <"info@bladibla.nl">\n";
/////Op deze plaats propte ik het bericht ook nog eens als een logje in de database, maar dat heb ik er voor jou uitgesloopt. Denk niet dat je zin hebt om ook nog eens met een MySQL database te gaan prutsen...
$verzendbericht = stripslashes($verzendbericht);
$onderwerp = stripslashes($onderwerp);
mail<"info@bladibla.nl">, $onderwerp, $verzendbericht, $headers);
echo "Uw bericht is verzonden. U zult spoedig een antwoord krijgen.";

}//gepost

?>
 
<?php
$ip = $_SERVER['REMOTE_ADDR'];
if (!$_POST['SUBMIT'])
{
?>
U kunt contact met me opnemen, door het invullen van volgend formulier:
<form method="POST">
<table border="0">
<tr>
<td>Uw naam:</td>
<td><input type="TEXT" name="naam"></td>
</tr>
<tr>
<td>Uw emailadres:</td>
<td><input type="TEXT" name="email"></td>
</tr>
<tr>
<td>Onderwerp:</td>
<td><input type="TEXT" name="onderwerp"></td>
</tr>
<tr>
<td>Bericht:</td>
<td><textarea name="bericht" cols="64" rows="12"></textarea></td>
</tr>
<tr>
<td colspan="2"><input type="SUBMIT" name="SUBMIT" value="Verstuur"></td>
</tr>
</table>
</form>
<?php
} else {//niet gepost
$naam = addslashes($_POST['naam']);
$email = addslashes($_POST["info@bladibla.nl]);
$onderwerp = addslashes($_POST['onderwerp']);
$bericht = nl2br(addslashes($_POST['bericht']));
if (empty($bericht) || empty($email) || empty($onderwerp) || empty($bericht))
{
echo "Je hebt 1 of meer velden niet ingevuld!";
exit; //stoppen met uitvoer van script
}
$verzendbericht = "Dit is een bericht afkomstig vanaf StijnZone.be. Het is verzonden door ".$naam." vanaf IP ".$ip." en met emailadres ".$email.".<br>
Dit is het bericht:<br>
".$bericht;
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "X-Priority: 3\r\n";
$headers .= "X-MSMail-Priority: Normal\r\n";
$headers .= "X-Mailer: php\r\n";
$headers .= "From: \"".$naam."\" <"info@bladibla.nl">\n";
/////Op deze plaats propte ik het bericht ook nog eens als een logje in de database, maar dat heb ik er voor jou uitgesloopt. Denk niet dat je zin hebt om ook nog eens met een MySQL database te gaan prutsen...
$verzendbericht = stripslashes($verzendbericht);
$onderwerp = stripslashes($onderwerp);
mail<"info@bladibla.nl">, $onderwerp, $verzendbericht, $headers);
echo "Uw bericht is verzonden. U zult spoedig een antwoord krijgen.";

}//gepost

?>

Je moet bij de door mij blauw gemarkeerde tekst je eigen e-mailadres neerzetten dan doet hij het als het goed is. Ik heb hem niet getest maar uit erbaring weet ik dat dit wel werkt.
 
Laatst bewerkt:
Bedankt voor je reactie! Ik heb precies zoals aangegeven mijn email adres op de plekken ingevuld, maar het komt nog niet aan.....:( Onder het formulier zie ik ook deze rare tekst:

Dit is het bericht:
".$bericht; $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; $headers .= "X-Priority: 3\r\n"; $headers .= "X-MSMail-Priority: Normal\r\n"; $headers .= "X-Mailer: php\r\n"; $headers .= "From: \"".$naam."\" <"info@parkett.nl">\n"; /////Op deze plaats propte ik het bericht ook nog eens als een logje in de database, maar dat heb ik er voor jou uitgesloopt. Denk niet dat je zin hebt om ook nog eens met een MySQL database te gaan prutsen... $verzendbericht = stripslashes($verzendbericht); $onderwerp = stripslashes($onderwerp); mail<"info@parkett.nl">, $onderwerp, $verzendbericht, $headers); echo "Uw bericht is verzonden. U zult spoedig een antwoord krijgen."; }//gepost ?>


Hoop dat dit misschien iemand wat zegt! Thanx anyway...! :)
 
Laatst bewerkt:
Of moet ik het misschien op de één of andere manier eerst uploaden of iets..?
 
PHP:
<?php
  
  $ip = $_SERVER['REMOTE_ADDR'];
  if( $_SERVER['REQUEST_METHOD'] != 'POST' ) {

?>

U kunt contact met me opnemen, door het invullen van volgend formulier:
<form method="POST" action="" name="formulier1">
  <table border="0">
    <tr>
      <td>Uw naam:</td>
      <td><input type="text" name="naam"></td>
    </tr>
    <tr>
      <td>Uw emailadres:</td>
      <td><input type="text" name="email"></td>
    </tr>
    <tr>
      <td>Onderwerp:</td>
      <td><input type="text" name="onderwerp"></td>
    </tr>
    <tr>
      <td>Bericht:</td>
      <td><textarea name="bericht" cols="64" rows="12"></textarea></td>
     </tr>
    <tr>
      <td colspan="2"><input type="submit" name="submit" value="Verstuur"></td>
    </tr>
  </table>
</form>

<?php

} else { //wel gepost

  $naam = addslashes( $_POST['naam'] );
  $email = addslashes( $_POST["email"] );
  $onderwerp = addslashes( $_POST['onderwerp'] );
  $bericht = nl2br( addslashes( $_POST['bericht'] ) );
  
  if (trim($bericht) == '' || trim($email) == '' || trim($onderwerp) == '' || trim($bericht) == ''){

    echo "Je hebt 1 of meer velden niet ingevuld!";
    exit; //stoppen met uitvoer van script

  }
  
  $verzendbericht = "Dit is een bericht afkomstig vanaf StijnZone.be. Het is verzonden door " . $naam . " vanaf IP " . $ip ." en met emailadres " . $email . ".<br>
  Dit is het bericht:<br> ".$bericht;

  $headers = "MIME-Version: 1.0\r\n";
  $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
  $headers .= "X-Priority: 3\r\n";
  $headers .= "X-MSMail-Priority: Normal\r\n";
  $headers .= "X-Mailer: php\r\n";
  $headers .= "From: \"".$naam."\" <\"info@bladibla.nl\">\n";

  if(mail("info@bladibla.nl", $onderwerp, $verzendbericht, $headers)){

    echo "Uw bericht is verzonden. U zult spoedig een antwoord krijgen.";

  } else {

    echo "Uw bericht kan niet worden verstuurd. Probeer het later opnieuw.";

  }

}//gepost

?>

Verbeterpunten:

- Checken of het formulier verstuurd is doe je met: if($_SERVER['REQUEST_METHOD'] == 'POST') { }
- action en name toegevoegd aan form-tag
- Waarden van HTML-attributen worden over het algemeen met kleine letters geschreven ("text" ipv "TEXT")
- Hij komt in jouw script in de else als ie wél gepost is, niet andersom zoals je comment aangeeft.
- Je kunt op je vericht
- Met trim($waarde) == '' kun je beter checken of een waarde leeg is
- De <> om je emailadres in de mail functie zijn overbodig en stonden verkeerd

Het is echter vrij waarschijnlijk dat het niet verzenden van de mail aan je SMTP instellingen ligt.
 
Laatst bewerkt:
Ik heb er zelf ook een op mijn website staan hij werkt super en makkelijk ik zet hem er wel effe op.

Bij de delen met /// ervoor moet je doen wat erin staat.
Dit is een php code dus hij werkt niet in HTML (Jou vorige code was ook php).

Zet dit in je body,
PHP:
<?php
$onderwerp = "Contact";
$ontvanger = "///Jou e-mailadres";
$reply = htmlspecialchars($_POST['je_email']);

if($_POST['verzenden'])
{
    $naam = htmlspecialchars($_POST['naam']);
    $leeftijd = htmlspecialchars($_POST['leeftijd']); 
    $je_email = htmlspecialchars($_POST['je_email']);
    $bericht = htmlspecialchars($_POST['bericht']);
    $bericht = "Naam: " . $naam . " | Leeftijd: " . $leeftijd . " | E-mailadres:  " . $je_email." | Bericht: " . $bericht ; 
    
    if(empty($_POST['naam']))
    {
      echo "<p><br />Je hebt geen naam ingevuld. <a href=\"javascript:history.back()\">Probeer opnieuw</a>.<br /><br /></p>";
    }

    elseif(empty($_POST['leeftijd']))
    { 
      echo "<p><br />Je hebt geen leeftijd ingevuld. <a href=\"javascript:history.back()\">Probeer opnieuw</a>.<br /><br /></p>";
    }
    
    elseif(empty($_POST['je_email']))
    {
      echo "<p><br />Je hebt geen e-mailadres ingevuld. <a href=\"javascript:history.back()\">Probeer opnieuw</a>.<br /><br /></p>";
    }  
    elseif(empty($_POST['bericht']))
    {
      echo "<p><br />Je hebt geen bericht ingevuld. <a href=\"javascript:history.back()\">Probeer opnieuw</a>.<br /><br /></p>";
    }  
    
    else
    {
      mail($ontvanger,$onderwerp,$bericht,"From: $reply");
      echo "<p>///Je eigen tekst voor als diegene het bericht geschreven en verstuurd heeft.</p>";
    }
}
else { 
?>
<form method="post" action="<?php echo($_SERVER['PHP_SELF']); ?>">
  <p><table border=0 align=center>
<tr>
  <td width="232.5" align="left" valign="top" class="stijl1">Naam: </td>
<td align="center">    <input type="text" name="naam"  />
<tr>
<tr>
  <td align="left" valign="top" class="stijl1"> Leeftijd: </td>
  <td align="center"><input type="text" name="leeftijd" />
<tr>
<tr>
  <td align="left" valign="top" class="stijl1"> Email adres: </td>
  <td align="center"><input type="text" name="je_email" />
<tr>
<tr>
  <td align="left" valign="top" class="stijl1"> Bericht: </td>
  <td align="center"><input type="text" name="bericht" />
<tr>
  </table>
<table width="750" border=0 align=center>
<tr height="50" >
  <td align="center"><input name="verzenden" type="submit" value="Verzenden" /></td>
<tr>
</table>
</form>
<p>
  <?php
}
?>
 
Php

Ik denk dat je vergeten bent dat jou form in php geschreven is...
 
Ik zie nu trouwens nog in je script hetvolgende:

PHP:
$email = addslashes( $_POST["info@bladibla.nl"] );

Dat gaat natuurlijk niet werken. Daar kun je beter even van maken:

PHP:
$email = addslashes( $_POST["email"] );

Dit stukje klopt ook niet:

PHP:
$headers .= "From: \"".$naam."\" <"info@bladibla.nl">\n";

Je kunt aan de syntax-highlighting wel zien dat dat niet klopt:

PHP:
$headers .= "From: \"".$naam."\" <\"info@bladibla.nl\">\n";

is beter.
 
Laatst bewerkt:
Bedankt voor de reacties.
Ja, ik zie dat ik mijn vorm in ieder geval niet in php heb geschreven....
Ik heb de code gewoon gekopieerd naar mijn website inhoud (HTML dus) en toen kreeg ik het formulier op de website wel goed te zien alleen verstuurde hij het niet....
Ik weet niets van php af en weet ook niet of het moeilijk is te maken maar ik weet nu een beetje in welke richting ik moet zoeken!!! Thanx :)
 
Ik zie nu trouwens nog in je script hetvolgende:

PHP:
$email = addslashes( $_POST["info@bladibla.nl"] );

Dat gaat natuurlijk niet werken. Daar kun je beter even van maken:

PHP:
$email = addslashes( $_POST["email"] );

Dit stukje klopt ook niet:

PHP:
$headers .= "From: \"".$naam."\" <"info@bladibla.nl">\n";

Je kunt aan de syntax-highlighting wel zien dat dat niet klopt:

PHP:
$headers .= "From: \"".$naam."\" <\"info@bladibla.nl\">\n";

is beter.

Je moet in die vakken je eigen e-mailadres zetten...
 
Ik geef hier aan dat de syntax niet klopt, niet dat het emailadres niet klopt.

$_POST['info@bladibla.nl'] bestaat namelijk niet, ook niet al je je eigen emailadres invult.

En ook daaronder snap ik dat info@bladibla.nl niet echt het email adres is, maar ik gaf aan dat er nog escapetekens voor de quotes moesten.
 
Bedankt. Ik ga dat formulier ook eens testen... maar ik heb nog wat verder gekeken, klopt het dat ik mijn website eerst moet uploaden en vandaar uit het contact formulier moet uploaden?
 
Je moet het altijd 'uploaden' als je PHP wilt gebruiken... dwz dat het of online moet staan, of dat je je eigen webserver (zoals WAMP of USBWebserver) moet draaien.

Anders wordt PHP gewoon genegeerd door je browser en dan werkt het gegarandeerd allemaal niet.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan