webForumDet fria alternativet

Bästa sättet att skicka en massa mail

PHP

4 svar · 300 visningar · startad av mikaeled

Medlem sedan dec. 2000157 inlägg
Frågan#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 :)

------------------
SPiN, bjorne.w@telia.com

-- They pretend to pay me, I pretend to work --

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

------------------
-mucho-

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
------------------
- Det var motgräs!
Roland Sandberg förklarar varför han missade öppet mål.

250 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
116 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)