scheiden van e-mailadressen met comma
Dat heb ik als volgt in elkaar geknutseld.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
$sql= "SELECT Lid_Mail
FROM leden
WHERE Status_ID='1'";
$resultaat=mysql_query($sql);
while($rij =mysql_fetch_array($resultaat)){
$email=$rij['Lid_Mail'] . ',';
}
mysql_close($db);
$_SESSION['email'] = $email;
FROM leden
WHERE Status_ID='1'";
$resultaat=mysql_query($sql);
while($rij =mysql_fetch_array($resultaat)){
$email=$rij['Lid_Mail'] . ',';
}
mysql_close($db);
$_SESSION['email'] = $email;
Nu eindig hij het laatste emailadres natuurlijk ook met een comma.
Dat pikt het phpmailer script niet.
Hoe kan ik dat het beste oplossen?
$email = substr($email, 0, -1);
Dat haalt de laatste karakter in $email weg, de komma dus.
substr()
Als alternatief zou je hieraan ook kunnen denken:
Je kunt ook overwegen om de mysql-functie GROUP_CONCAT() te gebruiken. Dan hoef je alleen maar te één keer fetchen, en niet alle rijen af te gaan.
Je kunt ook in een volgend geval eraan denken om alle waarden in een nieuwe array te stoppen, en hier implode() overheen te halen.
Ik heb nu GROUP_CONCAT() gebruikt maar die geeft geen resultaat als ik $email echo
Ik heb nu dit
Dit zou het goede resultaat moeten geven:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
$sql= "SELECT Lid_Mail
FROM leden
WHERE Status_ID='1'";
$resultaat=mysql_query($sql);
$email = '';
while($rij =mysql_fetch_array($resultaat)){
$email .= $rij['Lid_Mail'] . ',';
}
mysql_close($db);
$email=substr($email, 0, -1);
$_SESSION['email'] = $email;
FROM leden
WHERE Status_ID='1'";
$resultaat=mysql_query($sql);
$email = '';
while($rij =mysql_fetch_array($resultaat)){
$email .= $rij['Lid_Mail'] . ',';
}
mysql_close($db);
$email=substr($email, 0, -1);
$_SESSION['email'] = $email;
Over die group concat, die zal ongeveer zo moeten:
[email protected],,[email protected],,,
dus 2x hetzelfde e-mail adres terwijl de database 6 verschillende bevat.
Bij de 2e methode krijg ik niets?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$sql= "SELECT Lid_Mail
FROM leden
WHERE Status_ID=1";
$resultaat=mysql_query($sql);
$email = array();
while($rij =mysql_fetch_array($resultaat)){
$email[] = $rij['Lid_Mail'];
}
$_SESSION['email'] = implode( ',', $email);
?>
$sql= "SELECT Lid_Mail
FROM leden
WHERE Status_ID=1";
$resultaat=mysql_query($sql);
$email = array();
while($rij =mysql_fetch_array($resultaat)){
$email[] = $rij['Lid_Mail'];
}
$_SESSION['email'] = implode( ',', $email);
?>
Ik wil een formulier verzenden met phpMailer.
Dat formulier moet verzonden worden aan alle leden.
De adressen van die leden worden uit de database gehaald.
In het phpmailer script mag je maar 1 ricipient invullen. De overige e-mail adressen moeten in de cc.
Ik wil dat niet als een input veld in mijn formulier hebben omdat hij dan ook al deze e-mail adressen in de mail zet en alle ontvangers de e-mailadressen in de body van de mail ontvangen. (De while lus in dat formulier werkt overigens wel. Dus het phpmailer script is juist geconfigureerd.)
Vandaar de Session!
Ik vraag me nu af of op deze methode het phpmailer script de emailadressen echt ziet als comma gescheiden.
Dit is het stukje code van php mailer
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
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
/**
* Email Address to send the form contents "To"
* - can be set in the script or in the form as a form variable
* - for security, use this instead of using the form
* @var string
*/
if (!isset($recipient)) {
$recipient = 'info@********.nl';
} else {
$recipient = eregi_replace($email_bad_array,'',$recipient);
$recipient = str_replace(" ", "", $recipient);
}
/**
* Email Address to "Cc" the form contents
* separate multiple email addresses by comma
* - for security, use this instead of using the form
* ie: [email protected],[email protected]
* - can be set in the script or in the form as a form variable
* @var string
*/
if (!isset($cc)) {
$cc = $email;
} else {
$cc = eregi_replace($email_bad_array,'',$cc);
$cc = str_replace(";", ",", $cc);
$cc = str_replace(" ", "", $cc);
}
* Email Address to send the form contents "To"
* - can be set in the script or in the form as a form variable
* - for security, use this instead of using the form
* @var string
*/
if (!isset($recipient)) {
$recipient = 'info@********.nl';
} else {
$recipient = eregi_replace($email_bad_array,'',$recipient);
$recipient = str_replace(" ", "", $recipient);
}
/**
* Email Address to "Cc" the form contents
* separate multiple email addresses by comma
* - for security, use this instead of using the form
* ie: [email protected],[email protected]
* - can be set in the script or in the form as a form variable
* @var string
*/
if (!isset($cc)) {
$cc = $email;
} else {
$cc = eregi_replace($email_bad_array,'',$cc);
$cc = str_replace(";", ",", $cc);
$cc = str_replace(" ", "", $cc);
}
Dit is de foutmelding die ik krijg na verzenden. Ik heb de e-mailadressen even wat veranderd om niet al te veel spam te krijgen :-). Je moet van me aannemen dat dat allemaal bestaande emailadressen zijn.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
IP: 88.883.222.37 at 73-222.ftth.onsbrabantnet.nl
--------------------------------------------------------------------------------
The form was not submitted for the following reasons:
your email address: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected] - is invalid
Please use your browser's back button to return to the form and try again.
--------------------------------------------------------------------------------
The form was not submitted for the following reasons:
your email address: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected] - is invalid
Please use your browser's back button to return to the form and try again.
Gewijzigd op 09/09/2010 22:52:29 door Marc rc is as
Gebruik altijd BCC in plaats van CC in verband met privacy. Verder is het aantal adressen in een CC of BCC beperkt.
Maar als ik naar de foutmelding kijk zie ik een reeks van email adressen gescheiden door comma's. Dat is tcoh wat ze vragen. 6 stuks lijkt me niet te veel. En toch geeft het script een foutmelding.
Als ik de e-mailadressen meeneem in een hidden input veld werkt het wel. Iemand enig idee waarom op deze manier niet??
Maar waar stop jij de session gegevens dan in de mailer?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
//error_reporting(0);
error_reporting(E_ALL);
session_start ();
$email = $_SESSION['email'];
/*~ phpmailer-fe.php
.---------------------------------------------------------------------------.
| Software: PHPMailer-FE (Form mailer Edition) |
| Version: 4.0.6 |
| Contact: codeworxtech@users.sourceforge.net |
| Info: http://phpmailer.sourceforge.net |
?>
//error_reporting(0);
error_reporting(E_ALL);
session_start ();
$email = $_SESSION['email'];
/*~ phpmailer-fe.php
.---------------------------------------------------------------------------.
| Software: PHPMailer-FE (Form mailer Edition) |
| Version: 4.0.6 |
| Contact: codeworxtech@users.sourceforge.net |
| Info: http://phpmailer.sourceforge.net |
?>
Misschien niet onverstandig om te vermelden is dat ik het formulier niet verzend als
action="_lib/phpmaler-fe.php".
Omdat hij ook nog wat moet opslaan in de database is de action
Bij verzenden wordt dan de file ge-include
Toevoeging op 10/09/2010 13:39:43:
edit:
Hoe dom kan je zijn!
Ik heb die file ge-include. Waarom zou ik dan een Session starten??
Als je die
in een variabele hangt kan je die variabele gewoon in eht script van phpmailer gebruiken.
Dankzij jullie inbreng is het dus toch gelukt.
Echter: is het verstandig die phpmailer te includen??? Of kent dat gevaren? Normaal staat dat ding natuurlijk extern.
Gewijzigd op 10/09/2010 13:42:47 door Marc rc is as