scheiden van e-mailadressen met comma

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marc rc is as

Marc rc is as

09/09/2010 19:36:24
Quote Anchor link
Voor phpMailer ben ik bezig met een scriptje. In die pagina wil ik email adressen uit de database via een $_SESSION meenemen naar de volgende pagina.

Dat heb ik als volgt in elkaar geknutseld.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;


Nu eindig hij het laatste emailadres natuurlijk ook met een comma.
Dat pikt het phpmailer script niet.
Hoe kan ik dat het beste oplossen?
 
PHP hulp

PHP hulp

19/04/2024 00:38:28
 
Marco van Oort

Marco van Oort

09/09/2010 19:50:33
Quote Anchor link
Je kunt het makkelijkst dit doen:
$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.
 
Marc rc is as

Marc rc is as

09/09/2010 20:08:41
Quote Anchor link
Als ik het regel met de substr() gaat het niet helemaal goed en krijg ik 2x de mail terug op eenzelfde e-mail adres terwijl er 6 verschillende in de database staan.

Ik heb nu GROUP_CONCAT() gebruikt maar die geeft geen resultaat als ik $email echo

Ik heb nu dit

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
$sql= "SELECT *,
        GROUP_CONCAT(Lid_Mail)
        FROM leden
        WHERE Status_ID='1'";
        
$resultaat=mysql_query($sql);

$email=$rij['Lid_Mail'] . ',';
$email=substr($email, 0, -1);
mysql_close($db);

$_SESSION['email'] = $email;
 
Marco van Oort

Marco van Oort

09/09/2010 20:18:07
Quote Anchor link
Er zit sowieso een fout in je originele script, je overschrijft $email steeds in elke loop. Je kunt eens $email aan het eind echo'en, en kijken wat het dan precies geeft.
Dit zou het goede resultaat moeten geven:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;



Over die group concat, die zal ongeveer zo moeten:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
$sql= "SELECT GROUP_CONCAT(Lid_Mail) AS adressen
        FROM leden
        WHERE Status_ID='1'";
        
$resultaat=mysql_query($sql);

$email=$resultaat['adressen'];
mysql_close($db);

$_SESSION['email'] = $email;
 
Marc rc is as

Marc rc is as

09/09/2010 20:38:19
Quote Anchor link
Bij de eerste krijg ik die als ik echo
[email protected],,[email protected],,,

dus 2x hetzelfde e-mail adres terwijl de database 6 verschillende bevat.

Bij de 2e methode krijg ik niets?
 
- SanThe -

- SanThe -

09/09/2010 21:56:50
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
?>
 
Marc rc is as

Marc rc is as

09/09/2010 22:51:13
Quote Anchor link
Mischien is het zinvol wat meer te vertellen over het script omdat het nu wel lijkt te werken. Maar het wordt verkeerd verwerkt.

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)
PHP script in nieuw venster Selecteer het PHP script
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
/**
 * 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)
PHP script in nieuw venster Selecteer het PHP script
1
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.
Gewijzigd op 09/09/2010 22:52:29 door Marc rc is as
 
- SanThe -

- SanThe -

09/09/2010 23:56:38
Quote Anchor link
Gebruik altijd BCC in plaats van CC in verband met privacy. Verder is het aantal adressen in een CC of BCC beperkt.
 
Marc rc is as

Marc rc is as

10/09/2010 08:33:05
Quote Anchor link
Ok, dat is me duidelijk. Daar zal ik zeker rekening mee houden.
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??
 
- SanThe -

- SanThe -

10/09/2010 10:44:01
Quote Anchor link
Maar waar stop jij de session gegevens dan in de mailer?
 
Marc rc is as

Marc rc is as

10/09/2010 11:09:09
Quote Anchor link
Helemaal bovenaan in het script.


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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                              |
?>


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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
action="<?php echo $_SERVER['PHP_SELF'];?>"


Bij verzenden wordt dan de file ge-include

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
include_once("_lib/phpmailer-fe.php");


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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<?php implode( ',', $email);
?>

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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.