Toon posts:

[PHP] Meerdere mails met mail() wil niet?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi allemaal!

Ik heb wat problemen met mijn mail functie, en ik zie de fout maar niet (ook niet na de comments op php.net te lezen). Dit is wat ik gemaakt heb:
PHP:
1
<?$users = database_table_get("SELECT mail FROM userlist WHERE sendmails=1");    foreach($users as $user)    $emails[] = $user['mail'];mailOmega(join(", ", $emails), $message, "War Canceled!");?>

Bij deze oplossingen komen de mails soms aan, soms niet, en ik krijg er maar geen zicht op wanneer wel, wanneer niet.

Als ik het zo oplos, komen ze allemaal aan:
PHP:
1
<?$users = database_table_get("SELECT mail FROM userlist WHERE sendmails=1");for ($i = 0; $i < sizeof($users); $i++)    mailOmega($user['mail'], $message, "War Canceled!");?>

Het nadeel bij deze oplossing is dat hij 1 voor 1 gaat mailen, en dat het laden van de nieuwe pagina dus zwaar afhankelijk is van het aantal gebruikers.

Andere functies die ik gebruik:
PHP:
1
<?function mailOmega($player_mail, $message, $topic){    mail("$player_mail", "[Bla] " . $topic, "$message", "From: Bla <boeit@niet.com>");}?>

en
PHP:
1
<?function database_table_get($query, $key = 0) {    $rows = array();        $db_result = mysql_query($query);        while ($row = mysql_fetch_array($db_result, MYSQL_ASSOC)) {        if ($key) {            $rows[$row[$key]] = $row;        }        else {            $rows[] = $row;        }    }        mysql_free_result($db_result);        return $rows;}?>

Weet iemand waar de fout zit?

Bedankt hiervoor! :o

Verwijderd

Topicstarter
PS: De dbase bestaat momenteel uit 4 users die mails willen ontvangen, dus aan de hoeveelheid mails die verstuurd moeten worden, zal het niet liggen.

PS2: Ik doe een reply op mijn eigen post, en niet een edit, omdat ik anders de hele code opnieuw moet ingeven, en mijn server (waar ik op code) momenteel een CDtje aan het schrijven is. Excuses, maar ik persoonlijk vind die bug (?) zwaar irritant :)

Verwijderd

is het niet zo dat het "TO" veld van de mail functie maar 1 email adress mag bevatten en de andere adressen in het cc of bcc vak geplaatst moeten worden.
waarschijnlijk werkt het 1 om 1 verzenden wel en de andere manier niet ( als er meerdere adressen zijn).

en waarom niet even een regeltje bijvoegen als
PHP:
1
<?if (mail($emailadress, $topic, $message, "From: blaat@prutser.nl\nReply-to: $mijne-mail")) {  print 'message sent';} else {  print ' error bij het zenden';}?>

ofzow

Verwijderd

Topicstarter
http://www.php.net/manual/en/function.mail.php zegt:
mail() automatically mails the message specified in message to the receiver specified in to. Multiple recipients can be specified by putting a comma between each address in to.
Dus het mag wel, en het moet niet in de CC?

Dit geven ze trouwens als voorbeeld:
PHP:
1
<?/* recipients */$to  = "Mary <mary@example.com>" . ", " ; //note the comma$to .= "Kelly <kelly@example.com>";... lap tekst ...mail($to, $subject, $message, $headers);?>

Ik doe toch net hetzelfde ? Maar dan via een omwegje (omdat ik eerst alle mails uit de dbase moet halen) via:
PHP:
1
<?join(", ", $emails) .. ?>

Evenmin bedankt voor je reply!

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 10-08 15:15
Ik heb ooit wel eens via via gehoord dat bij bepaalde apache configuraties je i.p.v. een comma, alleen een puntcomma neer moet zetten.

Denk alleen niet dat dat het probleem is, want in zo'n geval zou je van php verwachten dat deze die conversie dan van je doet. Maar ach, je zou het kunnen proberen.

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


Verwijderd

Topicstarter
Op donderdag 28 maart 2002 00:13 schreef Infinitive het volgende:
Ik heb ooit wel eens via via gehoord dat bij bepaalde apache configuraties je i.p.v. een puntcomma, alleen een comma neer moet zetten.

Denk alleen niet dat dat het probleem is, want in zo'n geval zou je van php verwachten dat deze die conversie dan van je doet. Maar ach, je zou het kunnen proberen.
Ik schrijf toch alleen een comma? En als ik me niet vergis, is ',' de standaard voor het versturen naar meerdere personen.

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 10-08 15:15
Ow... eeh... andersom, probeer eens een puntcomma i.p.v. een comma...

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Zit er niet per ongeluk een \r\n in je database?
Note: Make sure you do not have any newline characters in the to or subject, or the mail may not be sent properly.

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 10-08 15:15
Weet je ook zeker dat het aan de meerdere geadresseerden ligt? Is er bijv. geen sendmail instelling dat je maar naar 1 persoon tegelijk kan sturen?
Wat is de fout die je krijgt?

(aan de inhoud van het mailtje zal het verder niet liggen, want zoals je zelf zegt, komen afzonderlijk gestuurde berichten gewoon aan).

Misschien wel van toepassing: wat is de php-versie waaronder je draait? Je zou eventueel op bugs.php.net kunnen kijken.

En als je nu een andere php-pagina maakt, maar dan met alleen:

mail('adres1@abc, adres2@abc', '...', '');

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 10-08 15:15
Oh ja, ik herinnerde me nog iets van toen ik RFC 2045...2048 las (E-mail, mime, etc). Als je naar de geaddreseerde kijkt, moet dat in de vorm:

"naam" <box@host.com>, "naam2" <box2@host2.com>

en niet:

naam <box@host.com>, naam2 <box2@host2.com

Ik weet niet of dit in jouw geval van toepassing is, maar ach, je kan het altijd proberen, toch?

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


Verwijderd

Topicstarter
Ok allemaal even proberen!

bedankt
Pagina: 1