Bästa sättet att skicka en massa mail

PHP

4 svar · 303 visningar · startad av mikaeled

Medlem sedan dec. 2000157 inlägg
Trådstart#1

Hej,

Hur ska jag göra för att skicka ut ett mycket stort antal email till olika adresser. Det kommer vara samma meddelande.

Jag vill att det ska gå fort och vara effektivt.

MVH

Mikael Edström
NN2 Viktor Rydbergs gymnasium

Medlem sedan sep. 200044 inlägg
#2

Hej,

Du matar in alla adresserna i en databas och loopar ut dom en efter en.

$subject  = "Rubrik";
$message .= "Meddelande rad ett\\n";
$message .= "meddelande rad två o.s.v.\\n";

$headers .= "From: info@domain.com \<info@domain.com\>\\n";
$headers .= "X-Sender: \<info@domain.com\>\\n"; 
$headers .= "X-Mailer: PHP\\n";
$headers .= "X-Priority: 1\\n"; # Om du vill ha en prioritet.
$headers .= "Return-Path: \<info@domain.com\>\\n";

/\* Du hämtar alla adresser från en databas \*/
$result = mysql_query( "SELECT \* FROM email ORDER BY email_id" );
while ( $a_row = mysql_fetch_array( $result ) )
{
	mail($a_row\['email'\], $subject, $message, $headers);
}

Lycka till!

Medlem sedan mars 20007 896 inlägg
#3

Njää... Det är inte speciellt effektivt. Och om det är JÄTTEmånga adresser kommer man troligen få en script-timeout för att det tar för lång tid. Skicka med alla adresser i BCC'n istället!

<?php
$subject = "Rubrik";
$message .= "Meddelande rad ett\n";
$message .= "meddelande rad två o.s.v.\n";

$headers .= "From: info@domain.com <info@domain.com>\n";
$headers .= "X-Sender: <info@domain.com>\n"; 
$headers .= "X-Mailer: PHP\n";
$headers .= "X-Priority: 1\n"; # Om du vill ha en prioritet.
$headers .= "Return-Path: <info@domain.com>\n";

$counter = 0;

/* Du hämtar alla adresser från en databas */
$result = mysql_query( "SELECT * FROM email ORDER BY email_id" );
while ( $a_row = mysql_fetch_array( $result ) )
{
$adresser[$counter++] = $a_row['email'];
}

$headers .= "bcc:" . implode(", ", $adresser) . "\n";

mail("digsjälv@kanske.?", $subject, $message, $headers);
?>

Ledsen för att jag snodde det mesta av din kod LOOPIA, men jag orkade inte skriva egen :)

Medlem sedan jan. 20007 697 inlägg
#4

Eller så kan man ju köra scriptet från kommandoprompten... Då fungerar LOOPIAs script väl? :q

Medlem sedan juni 20001 251 inlägg
#5

Använder man

<?
ini_set("max_execution_time","9999");
ignore_user_abort(true); 
set_time_limit(9999);

$subject = "Rubrik";
$message .= "Meddelande rad ett\n";
$message .= "meddelande rad två o.s.v.\n";

$headers .= "From: info@domain.com <info@domain.com>\n";
$headers .= "X-Sender: <info@domain.com>\n"; 
$headers .= "X-Mailer: PHP\n";
$headers .= "X-Priority: 1\n"; # Om du vill ha en prioritet.
$headers .= "Return-Path: <info@domain.com>\n";

/* Du hämtar alla adresser från en databas */
$result = mysql_query( "SELECT * FROM email ORDER BY email_id" );
$antal=mysql_num_rows($result);
$r=0;
while ( $a_row = mysql_fetch_array( $result ) )
{
$r++;
mail($a_row['email'], $subject, $message, $headers);
if ($r==$antal) {
exit;
}
}

?>

så kan man köra scriptet via webbläsaren utan att riskera timeout.

------------------
SteveNet

355 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
175 ms — deklarationer (db)
0 ms — hämta statistik (cache)
159 ms — hämta tråd, inlägg och bilagor (db)
152 ms — ändringar (db)