meer emailontvangers
Ik heb een prima werkend formulier maar nu wil ik graag dat ik een extra ontvanger kan toevoegen.
Dit heb ik nu:
// E-mailadres van de ontvanger
$mail_ontv = '[email protected]';
Hoe kan ik een tweede en eventueel derde ontvanger toevoegen?
Alvast bedankt,
Sjaan
Gewijzigd op 11/11/2020 20:33:25 door - Ariën -
$mail_ontv = '[email protected], [email protected], [email protected]';. Helaas werkt het niet alleen de eerste ontvanger krijgt het bericht.
Arien: In eerste instantie persoonlijk maar bcc zou beter zijn
https://www.php.net/manual/en/function.mail.php, en pas de BCC header toe.
Zie daarvoor Sample #5 op Wanneer je een library zoals PHPMailer gebruikt voor het versturen van e-mail ziet het toevoegen van meerdere ontvangers er mogelijk anders uit.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?php
// E-mailadres van de ontvanger
$mail_ontv = '[email protected], [email protected], [email protected]';
// Speciale checks voor naam en e-mailadres
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
// naam controle
if (empty($_POST['naam']))
$naam_fout = 1;
// e-mail controle
if (function_exists('filter_var') && !filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL))
$email_fout = 1;
// antiflood controle
if (!empty($_SESSION['antiflood']))
{
$seconde = 20; // 20 seconden voordat dezelfde persoon nog een keer een e-mail mag versturen
$tijd = time() - $_SESSION['antiflood'];
if($tijd < $seconde)
$antiflood = 1;
}
}
// Kijk of alle velden zijn ingevuld - naam mag alleen uit letters bestaan en het e-mailadres moet juist zijn
if (($_SERVER['REQUEST_METHOD'] == 'POST' && (!empty($antiflood) || empty($_POST['naam']) || !empty($naam_fout) || empty($_POST['mail']) || !empty($email_fout) || empty($_POST['bericht']) || empty($_POST['onderwerp']))) || $_SERVER['REQUEST_METHOD'] == 'GET')
{
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!empty($naam_fout))
echo '<p>Uw heeft uw naam niet ingevuld.</p>';
elseif (!empty($email_fout))
echo '<p>Uw e-mailadres is niet juist.</p>';
elseif (!empty($antiflood))
echo '<p>U mag slechts één bericht per ' . $seconde . ' seconde versturen.</p>';
else
echo '<p>U bent uw naam, e-mailadres, onderwerp of bericht vergeten in te vullen.</p>';
}
// HTML e-mail formulier
echo '<form method="post" action="' . $_SERVER['REQUEST_URI'] . '" />
<p>
<table>
<tr> <td width="20%">  </td>
<td><label for="naam">Naam:</label></td>
<td><input type="text" id="naam" name="naam" value="' . (isset($_POST['naam']) ? htmlspecialchars($_POST['naam']) : '') . '" /><br /></td>
</tr>
<tr>
<td width="20%"> </td>
<td> <label for="mail">E-mailadres:</label></td>
<td><input type="text" id="mail" name="mail" value="' . (isset($_POST['mail']) ? htmlspecialchars($_POST['mail']) : '') . '" /><br /></td>
</tr>
<td width="20%"> </td>
<td> <label for="onderwerp">Onderwerp:</label></td>
<td><input type="text" id="onderwerp" name="onderwerp" value="' . (isset($_POST['onderwerp']) ? htmlspecialchars($_POST['onderwerp']) : '') . '" /><br /></td>
</tr>
<tr>
<td width="20%"> </td>
<td><label for="bericht">Bericht:</label></td>
<td><textarea id="bericht" name="bericht" rows="8" style="width: 400px;">' . (isset($_POST['bericht']) ? htmlspecialchars($_POST['bericht']) : '') . '</textarea><br /></td>
</tr>
<tr>
<td width="20%"> </td>
<td> </td>
<td><input type="submit" name="submit" value=" Versturen " /></td>
</tr>
</table>
</p>';
?>
// E-mailadres van de ontvanger
$mail_ontv = '[email protected], [email protected], [email protected]';
// Speciale checks voor naam en e-mailadres
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
// naam controle
if (empty($_POST['naam']))
$naam_fout = 1;
// e-mail controle
if (function_exists('filter_var') && !filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL))
$email_fout = 1;
// antiflood controle
if (!empty($_SESSION['antiflood']))
{
$seconde = 20; // 20 seconden voordat dezelfde persoon nog een keer een e-mail mag versturen
$tijd = time() - $_SESSION['antiflood'];
if($tijd < $seconde)
$antiflood = 1;
}
}
// Kijk of alle velden zijn ingevuld - naam mag alleen uit letters bestaan en het e-mailadres moet juist zijn
if (($_SERVER['REQUEST_METHOD'] == 'POST' && (!empty($antiflood) || empty($_POST['naam']) || !empty($naam_fout) || empty($_POST['mail']) || !empty($email_fout) || empty($_POST['bericht']) || empty($_POST['onderwerp']))) || $_SERVER['REQUEST_METHOD'] == 'GET')
{
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!empty($naam_fout))
echo '<p>Uw heeft uw naam niet ingevuld.</p>';
elseif (!empty($email_fout))
echo '<p>Uw e-mailadres is niet juist.</p>';
elseif (!empty($antiflood))
echo '<p>U mag slechts één bericht per ' . $seconde . ' seconde versturen.</p>';
else
echo '<p>U bent uw naam, e-mailadres, onderwerp of bericht vergeten in te vullen.</p>';
}
// HTML e-mail formulier
echo '<form method="post" action="' . $_SERVER['REQUEST_URI'] . '" />
<p>
<table>
<tr> <td width="20%">  </td>
<td><label for="naam">Naam:</label></td>
<td><input type="text" id="naam" name="naam" value="' . (isset($_POST['naam']) ? htmlspecialchars($_POST['naam']) : '') . '" /><br /></td>
</tr>
<tr>
<td width="20%"> </td>
<td> <label for="mail">E-mailadres:</label></td>
<td><input type="text" id="mail" name="mail" value="' . (isset($_POST['mail']) ? htmlspecialchars($_POST['mail']) : '') . '" /><br /></td>
</tr>
<td width="20%"> </td>
<td> <label for="onderwerp">Onderwerp:</label></td>
<td><input type="text" id="onderwerp" name="onderwerp" value="' . (isset($_POST['onderwerp']) ? htmlspecialchars($_POST['onderwerp']) : '') . '" /><br /></td>
</tr>
<tr>
<td width="20%"> </td>
<td><label for="bericht">Bericht:</label></td>
<td><textarea id="bericht" name="bericht" rows="8" style="width: 400px;">' . (isset($_POST['bericht']) ? htmlspecialchars($_POST['bericht']) : '') . '</textarea><br /></td>
</tr>
<tr>
<td width="20%"> </td>
<td> </td>
<td><input type="submit" name="submit" value=" Versturen " /></td>
</tr>
</table>
</p>';
?>
Edit:
Mailadressen aangepast vanwege privacy.
Tevens [code] en [/code] tags geplaatst voor betere leesbaarheid.
Tevens [code] en [/code] tags geplaatst voor betere leesbaarheid.
Gewijzigd op 13/11/2020 10:24:12 door - Ariën -
Bericht komt bij beiden aan.
$mail_ontv = '[email protected]', '[email protected]', '[email protected]';
werkte niet
Toen in:
$mail_ontv = '[email protected]'; '[email protected]'; '[email protected]';
Werkt ook niet alleen de eerste emailontvanger krijgt het bericht. Ik heb echt geen idee wat ik verkeerd doe.....
Sjaan
Toevoeging op 15/11/2020 09:05:45:
Arien:
Dit is de hele code
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Contact</title>
<link href="../css/stijlblad.css" REL="stylesheet" TYPE="text/css">
<link href="../css/tabel.css" REL="stylesheet" TYPE="text/css">
</head>
<body>
<table width="95%" align="center" border="0">
<tr>
<td colspan="2" scope="col"><p>U kunt het onderstaande formulier gebruiken om contact met ons op te nemen.
Ook kan het worden gebruikt als bestelformulier. Gedurende de Corona-crisis kunnen onze boeken alleen op afspraak worden opgehaald. </p>
<p>Wilt u boeken bestellen uit de lijst vul dan in het berichtdeel het nummer(s) van het boek en de titel(s) in.
Bijvoorbeeld: </p>
<p> </p></td>
<td width="36%" rowspan="3" scope="col"><img src="../images/pandor klein.png"></td></tr>
<tr>
<td colspan="2"><div align="left">
<blockquote>
<blockquote>
<strong>2 Rotterdam met een knipoog<br><br>
23 Als de dag van gisteren</strong>
</blockquote>
</blockquote>
</div></td>
</tr>
<tr>
<td width="80%" colspan="2" scope="col"><p></p><p>Na ontvangst van uw bericht nemen wij zo spoedig mogelijk contact met u op. </p>
</td>
</tr>
</table>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?php>
// E-mailadres van de ontvanger
$mail_ontv = '[email protected]'; '[email protected]'; '[email protected]';
// Speciale checks voor naam en e-mailadres
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
// naam controle
if (empty($_POST['naam']))
$naam_fout = 1;
// e-mail controle
if (function_exists('filter_var') && !filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL))
$email_fout = 1;
// antiflood controle
if (!empty($_SESSION['antiflood']))
{
$seconde = 20; // 20 seconden voordat dezelfde persoon nog een keer een e-mail mag versturen
$tijd = time() - $_SESSION['antiflood'];
if($tijd < $seconde)
$antiflood = 1;
}
}
// Kijk of alle velden zijn ingevuld - naam mag alleen uit letters bestaan en het e-mailadres moet juist zijn
if (($_SERVER['REQUEST_METHOD'] == 'POST' && (!empty($antiflood) || empty($_POST['naam']) || !empty($naam_fout) || empty($_POST['mail']) || !empty($email_fout) || empty($_POST['bericht']) || empty($_POST['onderwerp']))) || $_SERVER['REQUEST_METHOD'] == 'GET')
{
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!empty($naam_fout))
echo '<p>Uw heeft uw naam niet ingevuld.</p>';
elseif (!empty($email_fout))
echo '<p>Uw e-mailadres is niet juist.</p>';
elseif (!empty($antiflood))
echo '<p>U mag slechts één bericht per ' . $seconde . ' seconde versturen.</p>';
else
echo '<p>U bent uw naam, e-mailadres, onderwerp of bericht vergeten in te vullen.</p>';
}
// HTML e-mail formlier
echo '<form method="post" action="' . $_SERVER['REQUEST_URI'] . '" />
<p>
<table>
<tr> <td width="20%">  </td>
<td><label for="naam">Naam:</label></td>
<td><input type="text" id="naam" name="naam" value="' . (isset($_POST['naam']) ? htmlspecialchars($_POST['naam']) : '') . '" /><br /></td>
</tr>
<tr>
<td width="20%"> </td>
<td> <label for="mail">E-mailadres:</label></td>
<td><input type="text" id="mail" name="mail" value="' . (isset($_POST['mail']) ? htmlspecialchars($_POST['mail']) : '') . '" /><br /></td>
</tr>
<td width="20%"> </td>
<td> <label for="onderwerp">Onderwerp:</label></td>
<td><input type="text" id="onderwerp" name="onderwerp" value="' . (isset($_POST['onderwerp']) ? htmlspecialchars($_POST['onderwerp']) : '') . '" /><br /></td>
</tr>
<tr>
<td width="20%"> </td>
<td><label for="bericht">Bericht:</label></td>
<td><textarea id="bericht" name="bericht" rows="8" style="width: 400px;">' . (isset($_POST['bericht']) ? htmlspecialchars($_POST['bericht']) : '') . '</textarea><br /></td>
</tr>
<tr>
<td width="20%"> </td>
<td> </td>
<td><input type="submit" name="submit" value=" Versturen " /></td>
</tr>
</table>
</p>
</form>';
}
// versturen naar
else
{
// set datum
$datum = date('d/m/Y H:i:s');
$inhoud_mail = "===================================================\n";
$inhoud_mail .= "Inhoud: " . $_SERVER['HTTP_HOST'] . "\n";
$inhoud_mail .= "===================================================\n\n";
$inhoud_mail .= "Naam: " . htmlspecialchars($_POST['naam']) . "\n";
$inhoud_mail .= "E-mail adres: " . htmlspecialchars($_POST['mail']) . "\n";
$inhoud_mail .= "Bericht:\n";
$inhoud_mail .= htmlspecialchars($_POST['bericht']) . "\n\n";
$inhoud_mail .= "Verstuurd op " . $datum . " via het IP adres " . $_SERVER['REMOTE_ADDR'] . "\n\n";
$inhoud_mail .= "===================================================\n\n";
// --------------------
// spambot protectie
$headers = 'From: ' . htmlspecialchars($_POST['naam']) . ' <' . $_POST['mail'] . '>';
$headers = stripslashes($headers);
$headers = str_replace('\n', '', $headers); // Verwijder \n
$headers = str_replace('\r', '', $headers); // Verwijder \r
$headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes
$_POST['onderwerp'] = str_replace('\n', '', $_POST['onderwerp']); // Verwijder \n
$_POST['onderwerp'] = str_replace('\r', '', $_POST['onderwerp']); // Verwijder \r
$_POST['onderwerp'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['onderwerp'])); // Slashes van quotes
if (mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers))
{
// zorg ervoor dat dezelfde persoon niet kan spammen
$_SESSION['antiflood'] = time();
echo '<h3>Het formulier is verzonden</h3>
<p>Bedankt voor het invullen van het formulier. We zullen zo spoedig mogelijk contact met u opnemen.</p>';
}
else
{
echo '<h3>Het formulier is niet verzonden</h3>
<p><b>Onze excuses.</b> Het formulier kon niet verzonden worden.</p>';
}
}
?>
// E-mailadres van de ontvanger
$mail_ontv = '[email protected]'; '[email protected]'; '[email protected]';
// Speciale checks voor naam en e-mailadres
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
// naam controle
if (empty($_POST['naam']))
$naam_fout = 1;
// e-mail controle
if (function_exists('filter_var') && !filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL))
$email_fout = 1;
// antiflood controle
if (!empty($_SESSION['antiflood']))
{
$seconde = 20; // 20 seconden voordat dezelfde persoon nog een keer een e-mail mag versturen
$tijd = time() - $_SESSION['antiflood'];
if($tijd < $seconde)
$antiflood = 1;
}
}
// Kijk of alle velden zijn ingevuld - naam mag alleen uit letters bestaan en het e-mailadres moet juist zijn
if (($_SERVER['REQUEST_METHOD'] == 'POST' && (!empty($antiflood) || empty($_POST['naam']) || !empty($naam_fout) || empty($_POST['mail']) || !empty($email_fout) || empty($_POST['bericht']) || empty($_POST['onderwerp']))) || $_SERVER['REQUEST_METHOD'] == 'GET')
{
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!empty($naam_fout))
echo '<p>Uw heeft uw naam niet ingevuld.</p>';
elseif (!empty($email_fout))
echo '<p>Uw e-mailadres is niet juist.</p>';
elseif (!empty($antiflood))
echo '<p>U mag slechts één bericht per ' . $seconde . ' seconde versturen.</p>';
else
echo '<p>U bent uw naam, e-mailadres, onderwerp of bericht vergeten in te vullen.</p>';
}
// HTML e-mail formlier
echo '<form method="post" action="' . $_SERVER['REQUEST_URI'] . '" />
<p>
<table>
<tr> <td width="20%">  </td>
<td><label for="naam">Naam:</label></td>
<td><input type="text" id="naam" name="naam" value="' . (isset($_POST['naam']) ? htmlspecialchars($_POST['naam']) : '') . '" /><br /></td>
</tr>
<tr>
<td width="20%"> </td>
<td> <label for="mail">E-mailadres:</label></td>
<td><input type="text" id="mail" name="mail" value="' . (isset($_POST['mail']) ? htmlspecialchars($_POST['mail']) : '') . '" /><br /></td>
</tr>
<td width="20%"> </td>
<td> <label for="onderwerp">Onderwerp:</label></td>
<td><input type="text" id="onderwerp" name="onderwerp" value="' . (isset($_POST['onderwerp']) ? htmlspecialchars($_POST['onderwerp']) : '') . '" /><br /></td>
</tr>
<tr>
<td width="20%"> </td>
<td><label for="bericht">Bericht:</label></td>
<td><textarea id="bericht" name="bericht" rows="8" style="width: 400px;">' . (isset($_POST['bericht']) ? htmlspecialchars($_POST['bericht']) : '') . '</textarea><br /></td>
</tr>
<tr>
<td width="20%"> </td>
<td> </td>
<td><input type="submit" name="submit" value=" Versturen " /></td>
</tr>
</table>
</p>
</form>';
}
// versturen naar
else
{
// set datum
$datum = date('d/m/Y H:i:s');
$inhoud_mail = "===================================================\n";
$inhoud_mail .= "Inhoud: " . $_SERVER['HTTP_HOST'] . "\n";
$inhoud_mail .= "===================================================\n\n";
$inhoud_mail .= "Naam: " . htmlspecialchars($_POST['naam']) . "\n";
$inhoud_mail .= "E-mail adres: " . htmlspecialchars($_POST['mail']) . "\n";
$inhoud_mail .= "Bericht:\n";
$inhoud_mail .= htmlspecialchars($_POST['bericht']) . "\n\n";
$inhoud_mail .= "Verstuurd op " . $datum . " via het IP adres " . $_SERVER['REMOTE_ADDR'] . "\n\n";
$inhoud_mail .= "===================================================\n\n";
// --------------------
// spambot protectie
$headers = 'From: ' . htmlspecialchars($_POST['naam']) . ' <' . $_POST['mail'] . '>';
$headers = stripslashes($headers);
$headers = str_replace('\n', '', $headers); // Verwijder \n
$headers = str_replace('\r', '', $headers); // Verwijder \r
$headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes
$_POST['onderwerp'] = str_replace('\n', '', $_POST['onderwerp']); // Verwijder \n
$_POST['onderwerp'] = str_replace('\r', '', $_POST['onderwerp']); // Verwijder \r
$_POST['onderwerp'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['onderwerp'])); // Slashes van quotes
if (mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers))
{
// zorg ervoor dat dezelfde persoon niet kan spammen
$_SESSION['antiflood'] = time();
echo '<h3>Het formulier is verzonden</h3>
<p>Bedankt voor het invullen van het formulier. We zullen zo spoedig mogelijk contact met u opnemen.</p>';
}
else
{
echo '<h3>Het formulier is niet verzonden</h3>
<p><b>Onze excuses.</b> Het formulier kon niet verzonden worden.</p>';
}
}
?>
</body>
</html>
Verder zet je er een puntkomma tussen in plaats van een komma. Door die puntkomma denkt PHP dat dat het einde van de tekst-string is.
Hier een praktijkvoorbeeld wat er fout gaat: https://3v4l.org/K0r8Q
Dus gebruik komma's tussen je e-mailadressen. Het eerste moet gewoon werken, of de hosting blokkeert dat mogelijk. In dat geval moet je de mailfunctie meerdere keren apart uitvoeren.
Gewijzigd op 15/11/2020 09:17:50 door - Ariën -
$mail_ontv = '[email protected], [email protected], [email protected]';
De editor zegt dat alle drie de ontvangers het bericht krijgen:
Output for 7.2.0 - 7.2.34, 7.3.0 - 7.3.24, 7.4.0 - 7.4.12, 8.0.0alpha1 - rc3
[email protected], [email protected], [email protected]
Maar bij mij gebeurt dat niet alleen de eerste ontvanger krijgt het bericht.
Die editor is een uitkomst voor mij hoewel het problaeem nog niet is opgelost
Gewijzigd op 15/11/2020 11:13:45 door Sjaan Lieder
Dan zal de hosting dit blokkeren, vermoed ik.
Zojuist heb ik dat gemerkt en mijn fout hersteld en nu werkt de code met meerdere mail ontvangers helemaal geweldig.
Iedereen die me zo geduldig heeft geholpen heel hartelijk bedankt.
Sjaan
PS. Helaas zijn jullie nog niet van me af want ik ga nu beginnen om een catalogus te bouwen met een daarbijbehorend bestelformulier. Ik vrees met grote vreeze hahahahahahahahaha