Kom ihåg mig?
Home Menu

Menu


Göra massutskick av e-mail med PHP

 
Ämnesverktyg Visningsalternativ
Oläst 2007-08-27, 23:27 #1
superhaga superhaga är inte uppkopplad
Nykomling
 
Reg.datum: Jun 2007
Inlägg: 16
superhaga superhaga är inte uppkopplad
Nykomling
 
Reg.datum: Jun 2007
Inlägg: 16
Hur gör man för att skicka nyhetsmail till alla sina 1000 kunder?

Det lär väl knappast gå genom att göra så här:

Kod:
$mailsubject = "Nyhetsbrev";
$mailbody = "Hej, kom och köp";

$mailadresser[] = (en väldig massa mailadresser);

foreach ($mailadresser AS $dummy => $mailadress)
{
  mail($mailadress,$mailsubject,$mailbody);
}
superhaga är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-08-27, 23:34 #2
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
Det går.. beroende på din timeout i php.

Du kan som alternativ lägga till en LIMIT i din SQL och skicka med ett offset till sidan som skickar email. Då kan du köra iväg 30 stycken email och sedan uppdatera sidan med nytt offset. På det sättet kan du även starta om från valfri punkt (glöm inte markera vilka emails du har skickat till i databasen bara).
grazzy är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-08-27, 23:56 #3
superhaga superhaga är inte uppkopplad
Nykomling
 
Reg.datum: Jun 2007
Inlägg: 16
superhaga superhaga är inte uppkopplad
Nykomling
 
Reg.datum: Jun 2007
Inlägg: 16
Å tusan... Men hur mycket tål mailservern innan den brakar ihop? Om det nu skulle vara så att man har ett par hundra kunder som skall få mail, så blir väl den väldigt belastad av detta.
superhaga är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-08-28, 00:22 #4
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
Mailservern är gjord för att klara riktigt mycket stryk. Den köar bara snällt upp alla mailen.
grazzy är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-08-28, 01:11 #5
hnn hnn är inte uppkopplad
Banned
 
Reg.datum: Mar 2004
Inlägg: 2 587
hnn hnn är inte uppkopplad
Banned
 
Reg.datum: Mar 2004
Inlägg: 2 587
grazzy vet... Han är WNs största spammare

Skämt åsido, det är precis som grazzy skriver...
Bara ös på med mail till servern. Tänk dock på att kontrollera med hotellet att det är OK att skicka ut nyhetsbrev, så dom inte stänger av dig.
hnn är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-08-28, 19:12 #6
superhaga superhaga är inte uppkopplad
Nykomling
 
Reg.datum: Jun 2007
Inlägg: 16
superhaga superhaga är inte uppkopplad
Nykomling
 
Reg.datum: Jun 2007
Inlägg: 16
Ok, jag testar mig blå.... Tack för svaren!
superhaga är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-08-28, 23:19 #7
haavi haavi är inte uppkopplad
Nykomling
 
Reg.datum: Aug 2007
Inlägg: 3
haavi haavi är inte uppkopplad
Nykomling
 
Reg.datum: Aug 2007
Inlägg: 3
Hej superhaga,
enligt PHP.net så tar mail-funktionens första parameter en sträng som bland annat kan se ut så här: "[email protected], [email protected]" eller så här: User <[email protected]>, Another User <[email protected]>.

Jag skulle därför ha skrivit din kod så här förmodligen:

Kod:
$email = "";
foreach ($mailadresser as $mailadress) {
	$email .= $mailadress . ", ";
}

$to = $email;

if (@mail($to, $subject, $message, $headers)) {
	$strSuccess = 'Ditt mail har nu skickats!';
	} else {
	$strError = 'Kunde inte skicka mailet';
}
På det här sättet behöver du bara anropa mail-funktionen en gång vilket jag skulle tro är mycket bättre prestandamässigt både mot webbservern och mailservern. Hämtar du e-postadresserna från en databas så se också till att du använder DISTINCT i dina SQL-anrop, exempelvis så här:

Kod:
$sql = "SELECT DISTINCT mail FROM anvandare";
$result = mysql_query($sql) or die(mysql_error());

$email = "";

while($row = mysql_fetch_assoc($result)) { 
	$email .= $row['mail'] . ", ";
}
På så sätt ser du till att du inte skickar ut samma mail flera gånger till någon om det skulle hända att det finns dubletter av samma e-postadresser i din databas (vilket du borde se till att det inte gör förresten)
haavi är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-08-28, 23:21 #8
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
Nej, det är ingen bra ide. Då kommer alla users att se alla andra users. Superhaga vill garanterat inte distribuera sin kunddatabas (eller sin kunds).

Det man skall använda i så fall är BCC (blind carbon copy - googla det) men många många mailmottagare triggar spamfilter på att ett mail kommer via BCC. Det är således inte alls att rekommendera.
grazzy är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-08-28, 23:38 #9
haavi haavi är inte uppkopplad
Nykomling
 
Reg.datum: Aug 2007
Inlägg: 3
haavi haavi är inte uppkopplad
Nykomling
 
Reg.datum: Aug 2007
Inlägg: 3
Ok grazzy, det tänkte jag faktiskt inte på men du har ju förstås rätt. Med tanke på vilken valuta e-postadresser har blivit så ska du inte följa mitt exempel superhaga.

Ett mail()-anrop för varje enskild e-postadress är väl den optimalaste lösning ändå antar jag.

Ta även en titt på klassen http://phpmailer.sourceforge.net/. Förenklar mailutskick betydligt i min mening och är lätt att lära sig!
haavi är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-08-30, 11:51 #10
stakess avatar
stakes stakes är inte uppkopplad
Medlem
 
Reg.datum: May 2005
Inlägg: 219
stakes stakes är inte uppkopplad
Medlem
stakess avatar
 
Reg.datum: May 2005
Inlägg: 219
Ta även en titt på.

http://swiftmailer.org

Dödar inte din server lika mycket
stakes är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 23:21.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017