24. oktober 2005 - 18:15Der er
27 kommentarer og 1 løsning
Hjælp til at bruge mail() funktionen
Jeg vil med denne kode sende en nyhedsmail. Mit problem er at det kun er den første i MySQL-databasen der får en mail. Er det bare en lille fejl, eller kan jeg ikke sende så mange mails på denne måde? Der er ca. 50 mails i databasen, og der kommer flere til.
Kode: ---------------------------------------------- $hent_mails = mysql_query("SELECT mail from et_mails_billeder"); while ($mails = mysql_fetch_Array($hent_mails)) { extract($mails); mail("$mail","Nyhedsmail fra..."," tekst..... "); }
Den nemme måde ville være blot at adskille alle modtagerne med et komma, og så smide dem ind i en BCC: header (de fleste vil nok ikke have deres e-mail adresse ud til andre ;)). Så behøver du kun en enkelt mail(), men alle får stadig mailen.
$hent_mails = mysql_query('SELECT mail from et_mails_billeder'); while ($mail = mysql_feetch_assoc($hent_mails)) $mails[]=$mail['mail']; mail('undisclosed-recipients:', 'Nyhedsmail fra blabla', 'min tekst her', 'From: your@email.org\r\n' . 'Reply-To: your@email.org\r\n' . 'X-Mailer: PHP/' . phpversion() . '\r\n' . 'Bcc: ' . implode(', ', $mails) . '\r\n');
Der skal selvfølgelig rettes lidt til hist og her (eksempelvis skal der helst en egentlig e-mail ind i From og Reply-To, og en del af tingene kunne godt blive flyttet ud i nogle variable), men i det store og hele burde det der fungere. Husk at lade \r\n blive hvor de er, da de adskiller headerne.
Prøv at smide en error_reporting(E_ALL); ind før det hele og se hvad den siger.
Vær i øvrigt opmærksom på at du kun selv kommer til at modtage den mail hvis du er i tabellen - du kan evt. erstatte undisclosed-recipients: med din e-mail adresse.
Jeg ved ikke lige hvad det skal sige, at lave en debug, men får nu: debug: mail('asger@crx-web.dk', 'Nyhedsmail fra blabla', 'min tekst her', 'From: your@email.org ' . 'Reply-To: your@email.org ' . 'X-Mailer: PHP/' . phpversion() . ' ' . 'Bcc: ' . implode(', ', ) . ' ')
Gah! Linie 2 af min kode - der skal selvfølgelig stå mysql_fetch_array, ikke mysql_feetch_array... omend jeg undrer mig lidt over der ikke kommer en parse error ud af det...
Det går da rigtig godt - der skal *helst* stå mysql_fetch_assoc, omend mysql_fetch_array også kan bruges. Eneste forskel er bare at assoc er lidt "billigere" at udføre.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.