login  Naam:   Wachtwoord: 
Registreer je!
 Forum

contact formulier met meerdere ontvangers.

Offline keverineke - 12/02/2014 19:00
Avatar van keverinekeLid Hallo,

Ik heb een contact formulier waarmee je kan kiezen tussen 2 ontvangers (optie 1: *** optie 2: webmaster) nu wil ik dat als ze optie 1 verkiezen, de mail ook naar mij wordt verzonden, maar dit wil maar niet werken.

Hier een voorbeeld van het formulier:
  1. <?php
  2. //arrays starten voor naam en emailadres
  3. $c['naamontvanger'] = array();
  4. $c['naar'] = array();
  5.  
  6. //alle namen met bijbehorenden emailadressen daaronder
  7. $c['naamontvanger'][] = 'naam 1';
  8. $c['naar'][] = 'info@website.be webmaster@website.be'; // hier moeten dus 2 email adressen in.
  9. $c['naamontvanger'][] = 'naam 2 (Webmaster)';
  10. $c['naar'][] = 'webmaster@website.be';
  11.  
  12.  
  13. if(!empty($_POST['Submit']))
  14. {
  15.  
  16. // START: Antie spam.
  17. if ($_POST['antispam'] != 'IkWilGeenSpam' )
  18. { $error_msg .='<div class="style1">- <b>Ik wil geen spam!</b></div>'; }
  19. // STOP: Antie spam.
  20.  
  21. if(strlen($_POST['voornaam']) == 0)
  22. { $error_msg .="<div class=\"style1\">- Voer astublieft uw voornaam in.</div>"; }
  23.  
  24. if(strlen($_POST['naam']) == 0)
  25. { $error_msg .="<div class=\"style1\">- Voer astublieft uw naam in.</div>"; }
  26.  
  27. if(!ereg("^[_a-zA-Z0-9-]+(\.[*@([a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$", $_POST['MAILFROM']))
  28. { $error_msg .="<div class=\"style1\">- Voer astublieft een geldig email adres in.</div>"; }
  29.  
  30. if(strlen($_POST['inhoud']) == 0)
  31. { $error_msg .="<div class=\"style1\">- Duid astublieft de inhoud aan.</div>"; }
  32.  
  33. if(strlen($_POST['SUBJECT']) == 0)
  34. { $error_msg .="<div class=\"style1\">- Voer astublieft uw onderwerp in.</div>"; }
  35.  
  36. if(strlen($_POST['naar']) == 0) //wanneer de ontvanger nog op "Ontvanger" staat
  37. { $error_msg .="<div class=\"style1\">- Duid astublieft een ontvanger aan.</div>"; } //wanneer dat zo is
  38.  
  39. if(strlen($_POST['field']) == 0)
  40. { $error_msg .="<div class=\"style1\">- Voer astublieft uw bericht in.</div>"; }
  41.  
  42. if(!empty($error_msg))
  43. {
  44. //Een van de velden werd niet goed ingevuld
  45. echo "<div class=\"style1\"><b>Het bericht kon niet worden verzonden door volgende redenen:</b></div><br>";
  46. echo $error_msg;
  47. echo "<br><div class=\"style1\">Klik op <a href=javascript:history.back(1)><b>Ga terug</b></a> en vul alle velden in.</span><br><br>";
  48. }
  49. else
  50. {
  51. $subject = "Contact."; //Subject van de mail.
  52. $header = "From: website.be";
  53. $mail_body = "Contact:\n----------\n\n";
  54. $mail_body .= "Vooraam: " . $_POST['voornaam'] . "\n";
  55. $mail_body .= "Naam: " . $_POST['naam'] . "\n";
  56. $mail_body .= "E-mail: " . $_POST['MAILFROM'] . "\n";
  57.  
  58. $mail_body .= "Inhoud: " . $_POST['inhoud'] . "\n";
  59. $mail_body .= "Onderwerp: " . $_POST['SUBJECT'] . "\n";
  60. $mail_body .= "Aan:" . $_POST['naamontvanger'] . " ". $_POST['naar'] ."\n";
  61. $mail_body .= "IP-adres: " .$_SERVER["REMOTE_ADDR"]. "\n";
  62. $mail_body .= "Browser: " .$_SERVER["HTTP_USER_AGENT"]. "\n";
  63. $mail_body .= "Referer: " .$_SERVER["HTTP_REFERER"]. "\n";
  64. $mail_body .= "Host: " .$_SERVER['HTTP_HOST']. "\n";
  65. $mail_body .= "Tijd: " . date("d-m-Y") . " " . date("H:i") . "\n\n";
  66. $mail_body .= "Bericht:\n";
  67. $mail_body .= $_POST['field'];
  68. mail($_POST['naar'], $_POST['SUBJECT'], $mail_body, $header); //verzenden email
  69. echo "<div class=\"style1\"><b>Beste " .$_POST['naam']. ", uw bericht is succesvol verzonden.</b></div><br>
  70. <div class=\"style1\">Er zal zo spoedig mogelijk contact met u opgenomen worden.</div><br><br>";
  71. echo "<div class=\"style1\"><a class=\"main\" href='javascript:history.back(1)'>< Ga terug</a></div>";
  72. }
  73. }
  74. else
  75. {
  76. ?>
  77.  
  78. <form action="" method="POST" name="contact">
  79. <table border="0" align="left" width="50%" class="style1">
  80. <input type='hidden' id='antispam' name='antispam' value='' />
  81. <script type='text/javascript'>
  82. document.getElementById('antispam').value='IkWilGeenSpam';
  83. </script>
  84. <tr>
  85.  
  86. <td width="30%">
  87. <b>Voornaam:</b> <font color="#CC0000">*</font></td>
  88. <td width="20%">
  89. <input name="voornaam" type="text" size="29"></td>
  90. </tr>
  91. <tr>
  92.  
  93. <td width="30%">
  94. <b>Naam:</b> <font color="#CC0000">*</font></td>
  95. <td width="20%">
  96. <input name="naam" type="text" size="29"></td>
  97. </tr>
  98. <tr>
  99.  
  100. <td width="30%">
  101. <b>E-mail:</b> <font color="#CC0000">*</font></td>
  102. <td width="20%">
  103. <input name="MAILFROM" type="text" size="29"></td>
  104. </tr>
  105. <tr>
  106.  
  107. <td width="30%">
  108. <b>Inhoud:</b> <font color="#CC0000">*</font></td>
  109. <td width="20%">
  110. <select name="inhoud">
  111. <option value="" selected="selected">(maak een keuze)</option>
  112. <option value="Ik heb een vraag">Ik heb een vraag</option>
  113. <option value="Ik wil prijs vragen">Ik wil prijs vragen</option>
  114. <option value="Ik wil bestellen">Ik wil bestellen</option>
  115. <option value="Andere">Andere</option>
  116. </select></td>
  117. </tr>
  118. <tr>
  119. <td width="30%"><b>Aan:</b> <font color="#CC0000">*</font></td>
  120. <td width="20%">
  121. <select size="1" name="naar">
  122. <option value="" selected="selected">(kies een ontvanger)</option>
  123. <?php
  124. foreach($c['naar'] as $key => $value) //namen van ontvangers ophalem
  125. {
  126. echo '<option value="'.$value.'">'.$c['naamontvanger'][$key].'</option>'; //en ze in een dropdownbox zetten
  127. }
  128. ?>
  129. </select></td>
  130. </tr>
  131. <tr>
  132.  
  133. <td width="30%">
  134. <b>Onderwerp:</b> <font color="#CC0000">*</font></td>
  135. <td width="20%">
  136. <input name="SUBJECT" type="text" size="29" maxlength="30"></td>
  137. </tr>
  138. <tr>
  139.  
  140. <td colspan="2">
  141. <b>Bericht:</b> <font color="#CC0000">*</font><br>
  142. <div align="left"><textarea name="field" cols="42" rows="6"></textarea></div>
  143. <br>
  144.  
  145. <div align="right">
  146. Velden met een <font color="#CC0000">*</font> zijn verplicht in te vullen.&nbsp;&nbsp;</div>
  147.  
  148. <br />
  149.  
  150. <div align="right">
  151. <input type="Submit" name="Submit" value="Verzenden">
  152. &nbsp;
  153. <input type="reset" name="cmdWissen" value="Wis">&nbsp&nbsp;</div></td>
  154. </tr>
  155. </table>
  156. </form>
  157. <?php
  158. }
  159. ?>


Iemand daar een oplossing voor?
Alvast bendankt ;)

6 antwoorden

Gesponsorde links
Offline Jointjeff - 12/02/2014 19:12
Avatar van Jointjeff HTML interesse Je moet de e-mailadressen scheiden met een komma.
Bedankt door: keverineke
Offline keverineke - 12/02/2014 19:17
Avatar van keverineke Lid nee, dit werkt jammer genoeg niet.

en ook zo werkt het niet:
$c['naar'][] = 'info@website.be, webmaster@website.be';
$c['naar'][] = 'info@website.be' 'webmaster@website.be';
$c['naar'][] = 'info@website.be webmaster@website.be';
Offline Jointjeff - 12/02/2014 19:28 (laatste wijziging 12/02/2014 19:37)
Avatar van Jointjeff HTML interesse Je kan in ieder geval voor de korte termijn $_POST['naar'] vervangen met de e-mailadressen zelf.

Dan krijg je dus:
  1. mail('info@emailadres1.nl, info@emailadres2.nl', $_POST['SUBJECT'], $mail_body, $header); //verzenden email


Edit: Dit antwoord klopt niet, excuus, ik kom er op terug.

--- edit 19:34 ----

Ik heb het net getest door met komma te separeren en dat lukt. Ik kreeg op beide mailadressen het mailtje binnen.

Zie deze schermafbeelding
Bedankt door: keverineke
Offline Thomas - 12/02/2014 20:14
Avatar van Thomas Moderator De eerste parameter van de mail() functie verwacht een string. Deze string mag een kommagescheiden lijst van e-mailadressen zijn (maar dan wel zonder spaties).

Je kunt van array naar string met de implode() functie (met als scheidingsteken (de "glue") een komma).

Je zou er natuurlijk ook voor kunnen kiezen om de keuzemogelijkheden uit te schrijven (en daarbij de keys te gebruiken, ipv de volledige e-mailadresssen). Dan krijg je dus zoiets als:

  1. if ($_POST['naar'] == 0) {
  2. // eerste keuze geselecteerd (arrays beginnen bij index 0)
  3. // stuur e-mail naar beide adressen
  4. $to = implode(',', $c['naar']);
  5. } else {
  6. $to = $c['naar'][$_POST['naar']];
  7. }
  8. // ...
  9. mail($to, ...);


Je moet natuurlijk wel controleren of $_POST['naar'] een geldige numerieke index bevat.


Je zou natuurlijk ook MIME mail kunnen gebruiken, dan kun je zoveel 'To:' headers definieren als je wilt.
Bedankt door: keverineke
Offline keverineke - 12/02/2014 20:17
Avatar van keverineke Lid Vroeger ging dit idd wel met 2 e-mail adressen.
Maar ben verhuisd naar one.com en daar MOET het e-mail adres een e-mail adres van je domein zijn. Bijvoorbeeld een gmail of hotmail acount daarin werkt niet, raar maar waar.
Nochtans heb ik nu 2 echte e-mail adressen van het domein zelf.
Naar 1 persoon sturen lukt,m aar naar 2 tergelijk niet.

Misschien moet ik de support van one eens contacteren... ?
Offline Thomas - 12/02/2014 20:31
Avatar van Thomas Moderator Dat kun je doen als laatste redmiddel.

Ander alternatief: heb je geprobeerd om twee losse mailtjes te versturen (dus twee aanroepen van de mail() functie)? De mail() functie geeft ook een boolean (true of false) terug, controleer je daar op? Dat geeft aan of de mail succesvol is verzonden. Dat is overigens niet hetzelfde als succesvol ontvangen. Het kan zijn dat er een vertraging in de ontvangst zit, of dat deze door een spamfilter is gevangen of wat dan ook. Waaruit leid je af dat het niet werkt? Krijg je een foutmelding of ontvang je geen mail? Misschien zit morgen je inbox vol .
Bedankt door: keverineke
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.216s