avminarm: Det plejer at være mig som går PEAR-amok - men jeg kan ikke engang se hvilken klasse du mener!
duhn: Hvis du/I vil undgå at medarbejderne føler sig spammet er det jo vigtigt at muligheden for at sende mails til alle medarbejdere ikke bliver misbrugt - altså at den bliver brugt meget sjældent (eks. én gang i kvartalet!) Derudover skal indholdet af mailen selvfølgelig være noget som medarbejderne vil finde interessant, så de ikke føler deres tid bliver spildt - dvs. mailen skal indeholde information de ikke har i forvejen.
Den tekniske side af sagen er til gengæld meget nemmere :-) At bruge mail()-funktionen i en løkke er et klassisk eksempel på, hvordan man tvinger både php- og smtp-server helt i knæ, når der skal sendes så mange emails! Dette hænger sammen med at mail-funktionen er meget ineffektiv i denne sammenhæng, da den for hver email skal åbne og lukke forbindelsen til smtp-serveren samt sende emailen.
Det er en del smartere/hurtigere at åbne forbindelsen, sende alle mails og derefter lukke forbindelsen igen. Der findes en klasse som laver den hårde del af arbejdet for dig på følgende adresse:
http://www.zend.com/codex.php?id=347&single=1Du bruger den på følgende måde:
// indsæt koden til klassen her
// opret instans af klassen smtp_client
// indebærer forbindelse til smtp-server (mailhost angives som inputargument - default er localhost)
$smtp = new smtp_client(); //bemærk rettet i forhold til original!
$from = 'afsender@email.dk';
$subject = 'emne for mailen';
$header = 'headere';
$body = 'mailteksten';
//indsæt db-connection + db-valg her
$res = mysql_query('SELECT email, navn FROM emailbase') or die(mysql_error());
while (list($email, $navn) = mysql_fetch_row($res)) {
$smtp->email($from, $email, $name, $header, $subject, $body);
}
//send alle mails
$smtp->send();