Contactform

Status
Niet open voor verdere reacties.

gonzo31

Gebruiker
Lid geworden
11 jan 2007
Berichten
143
Hallo,

Ik heb een contactform ergens vandaan gehaald alleen diegene kan ik niet berijken. Nu is het volgende het probleem: Er worden geen e-mails verstuurd. Voor de rest werkt het prima, alleen er komt domweg niets aan. Iemand een tip? Ik ben zelf niet zo goed in programmeren van PHP dus aanpassen van het script zou ook zeer welkom zijn.

Alvast bedankt!

Arjan
PHP:
<?
$wie = $_GET['aan'];
if($_POST['verzenden']) {
  if(!$wie) {
  } else { $naar = $wie; }
  $headers = "From:".$reply."";
  mail($naar, $onderwerp, $bericht, $headers);
  echo "Your e-mail has been send successfully!";
} else {
?>
<form name="contact" method="post" action="">
<table width="975"  border="0" cellspacing="0" cellpadding="0">
  <tr bgcolor="#CCCCCC">
    <td colspan="2">&nbsp;</td>
  </tr>
<?
  if(!$wie) {
?>  
  <tr>
    <td>To:</td>
    <td>
      <select name="naar">
        <option value="mail1@nogwat.com">Webmaster</option>
		<option value="mail2@nogwat.com">persoon 1</option>
	  </select>
    </td>
  </tr>
<?
  } else { echo "
  <tr>
    <td>Aan:</td>
    <td><b>$wie</b></td>
  </tr>"; }
?>  
  <tr>
    <td width="30%">Subject:</td>
    <td width="70%">
      <input type="text" name="onderwerp">
	</td>
  </tr>  <tr>
    <td valign="top">Your e-mail address:</td>
    <td>
      <input type="text" name="reply">
    </td>
  </tr>  
  </tr>  
  <tr>
    <td valign="top">Message:</td>
    <td>
      <textarea name="bericht" cols="50" rows="6"></textarea>
    </td>
  </tr>
  <tr>
    <td colspan="2">
      <input type="submit" name="verzenden" value="Send">
      <input type="reset" name="reset" value="Reset">
    </td>
  </tr>  
</table></form>
<?
}
?>
 
Waarschijnlijk komt dat omdat er nooit een $_GET['aan'] wordt gemaakt...

Een $_POST['aan'] komt echter in dit script wel voor.

Ook mist er een action in je <form>, het is dus niet duidelijk voor het formulier wat alles heen moet. Net als alle variabelen die je wilt mailen met de functie mail, daar moet ook allemaal $_POST bij.

Gebruik dit script daarom eens:
PHP:
<?
// LEEG LATEN!
$message = "";

if($_POST['verzenden']) {
  $headers = "From:".$POST['reply'];
  mail($POST['naar'], $_POST['onderwerp'], $POST['bericht'], $headers);
  $message = 'Het bericht is succesvol verzonden naar '. $_POST['naar'] .'!';
} else {
?>
<form name="contact" method="post" action="<?= $_SERVER['PHP_SELF'] ?>">
<table width="975"  border="0" cellspacing="0" cellpadding="0">
  <tr bgcolor="#CCCCCC">
    <td colspan="2">&nbsp;</td>
  </tr>
<?
if(!$message) {
?>  
  <tr>
    <td>Aan:</td>
    <td>
      <select name="naar">
        <option value="mail1@nogwat.com">Webmaster</option>
        <option value="mail2@nogwat.com">persoon 1</option>
      </select>
    </td>
  </tr>
<?
} else {
  echo '
  <tr>
    <td colspan="2"><b>'. $message .'</b></td>
  </tr>';
}
?>  
  <tr>
    <td width="30%">Onderwerp:</td>
    <td width="70%">
      <input type="text" name="onderwerp">
    </td>
  </tr>
  <tr>
    <td valign="top">Uw e-mailadres</td>
    <td>
      <input type="text" name="reply">
    </td>
  </tr>  
  </tr>  
  <tr>
    <td valign="top">Bericht:</td>
    <td>
      <textarea name="bericht" cols="50" rows="6"></textarea>
    </td>
  </tr>
  <tr>
    <td colspan="2">
      <input type="submit" name="verzenden" value="Send">
      <input type="reset" name="reset" value="Reset">
    </td>
  </tr>  
</table>
</form>
<?
}
?>

Volgens mij moet hij zo werken.
 
Hm, hij werkt nog niet. Het staat ergen geparkeerd waar in iedergeval wel PHP verwerkt wordt dus daar zout het niet aan moeten liggen. Je kan daar wel userlevels aangeven maar na alle geprobeerd te hebben 'still nothing'. Ook het bericht 'uw bericht is verzonden aan' komt nu niet naar voren.

Even zo goed alvast bedankt voor de moeite.

Vr. groet
 
Userlevels?

Daar wordt niets mee gedaan in dit script dus als dit gedeelte uitmaakt van een groter script is dat wel zo handig om te melden.

Verander dit stuk eens
PHP:
if($_POST['verzenden']) { 
  $headers = "From:".$POST['reply']; 
  mail($POST['naar'], $_POST['onderwerp'], $POST['bericht'], $headers); 
  $message = 'Het bericht is succesvol verzonden naar '. $_POST['naar'] .'!'; 
} else {
in
PHP:
if($_POST['verzenden']) { 
  echo 'Er is op de knop "Send" gedrukt';
} else {
 
De volgende code werkt bij mij:

PHP:
<?
// LEEG LATEN!
$message = "";



if( isset( $_POST['verzenden']) ) {
	if( !empty( $_POST['reply'] ) && !empty( $_POST['onderwerp'] ) && !empty( $_POST['bericht'] ) ) {
		$headers = "From:". $POST['reply'];
		mail($POST['naar'], $_POST['onderwerp'], $POST['bericht'], $headers);
		$message = 'Het bericht is succesvol verzonden naar '. $_POST['naar'] .'!';
	} else {
		$message = 'Je bent een veld vergeten in te vullen!';
	}
	echo $message;
} else {
?>
<form name="contact" method="post" action="<?= $_SERVER['PHP_SELF'] ?>">
<table width="975"  border="0" cellspacing="0" cellpadding="0">
  <tr bgcolor="#CCCCCC">
    <td colspan="2">&nbsp;</td>
  </tr> 
  <tr>
    <td>Aan:</td>
    <td>
      <select name="naar">
        <option value="mail1@nogwat.com">Webmaster</option>
        <option value="mail2@nogwat.com">persoon 1</option>
      </select>
    </td>
  </tr> 
  <tr>
    <td width="30%">Onderwerp:</td>
    <td width="70%">
      <input type="text" name="onderwerp">
    </td>
  </tr>
  <tr>
    <td valign="top">Uw e-mailadres</td>
    <td>
      <input type="text" name="reply">
    </td>
  </tr>  
  </tr>  
  <tr>
    <td valign="top">Bericht:</td>
    <td>
      <textarea name="bericht" cols="50" rows="6"></textarea>
    </td>
  </tr>
  <tr>
    <td colspan="2">
      <input type="submit" name="verzenden" value="Send">
      <input type="reset" name="reset" value="Reset">
    </td>
  </tr>  
</table>
</form>
<?
}
?>
 
Nou, ik heb eindelijk tijd gehad om de boel online te knallen. Maar weer worden er geen mails verstuurd. Het script werkt voor de rest goed want het zegt keurig verzonden of veld vergeten in te vullen. Raar.

Iedereen bedankt voor de hulp!
 
Verander dit stuk eens
PHP:
if($_POST['verzenden']) { 
  $headers = "From:".$POST['reply']; 
  mail($POST['naar'], $_POST['onderwerp'], $POST['bericht'], $headers); 
  $message = 'Het bericht is succesvol verzonden naar '. $_POST['naar'] .'!'; 
} else {
in
PHP:
if($_POST['verzenden']) { 
  echo 'Er is op de knop "Send" gedrukt';
} else {
Dit advies nog eens ter harte genomen. Die had ik per ongeluk overgeslagen... Het script zegt wel "er is op de knop "send" gedrukt". Dat werkt dus... als ik het weer terug verander werkt het weer niet....
 
Grote kans dat de mail instellingen niet goed instelt zijn op de server. Wellicht kun je dat even navragen aan je host.

Je kunt het makkelijk testen door alles zelf in te vullen.
PHP:
mail('jouwadres@mail.nl', 'Test', 'Dit is een test bericht');
Plaats dat in een php-bestand, upload hem en surf er dan heen. Vervolgens moet er een mailtje naar jouw toe worden gestuurd.

Gebeurd dat niet dan zijn de instellingen dus niet goed.
 
Grote kans dat de mail instellingen niet goed instelt zijn op de server. Wellicht kun je dat even navragen aan je host.

Je kunt het makkelijk testen door alles zelf in te vullen.
PHP:
mail('jouwadres@mail.nl', 'Test', 'Dit is een test bericht');
Plaats dat in een php-bestand, upload hem en surf er dan heen. Vervolgens moet er een mailtje naar jouw toe worden gestuurd.

Gebeurd dat niet dan zijn de instellingen dus niet goed.

hmm, nu wordt 't intressant. Dat werkt ook niet. Wellicht idd iets bij server. Ik ga eens op zoek, alhoewel nog geen idee hebbende waar te beginnen...
 
Probleem opgelost:
1. You have entered an e-mail address which is not hosted on our servers. We require the one of either the 'FROM:' e-mail address or the 'TO:' e-mail address to be hosted on our servers. Only if one of them is hosted on our servers, you will be able to send e-mail successfully.
Beetje naar want voor e-mail moet ik waarschijnlijk betalen. Maar goed, bedankt voor de schop in de juiste richting. Iemand die toevallig weet of er alternatieven zijn?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan