Hur man skickar ut en massa mail via PHP

Publicerad i php av ShortLikeAFox den 19 september 2008

Så du vill skicka ut en massa e-post eller om du vill skapa ett program som snabbt kan ändras för att skicka ut flera massa mail. PHP blir enkelt. I det här exemplet kommer jag att anta att du har en lista med e-postadresser som du vill skicka ett e-postmeddelande till. Jag kommer också att anta att du håller den här listan i en databas, men detta nummer skulle lätt kunna justeras till att använda antingen en hårdkodad e-postadress förteckning eller lista från en annan källa.

<? php

/ / First ansluta till databasen som innehåller e-postadress information.
$ user = "Användare";
$ värd = "host";
$ lösenord = "lösenord";
$ databas = "databas";

( "Couldn’t connect to server" ); $ cxn = mysql_connect ($ värd $ användare, $ password) eller dö ( "Det gick inte att ansluta till servern");
mysql_select_db ($ databas);

/ / Query tabellen som innehåller e-postadresser. Fyll i ditt eget namn här ...
$ query = "SELECT * FROM theEmailAddresses";
( mysql_error ($cxn)); $ result = mysql_query ($ query, $ cxn) eller(mysql_error ($ cxn));
$ nRows = mysql_num_rows ($ resultat);

/ / Vem avsändaren kommer att identifieras som. Du kan sätta in vad du vill här, men det är verkligen inte så etiska för att placera en e-postadress som du inte har kontroll över här.
$ från = "From: me@mydomain.com";
/ / A standard e-ämnesraden
$ Ämne = "Vad är nytt på mydomain.com";
/ / Meddelandet
$ meddelande = "Hej värderade vän,

Vi nu sälja kakor på mydomain.com. Var noga med att kolla upp det!
Med vänliga hälsningar,
mig ";

/ / Vi har redan frågat alla e-postadressen. Nu har vi bara behöver skicka e-post
0 ; $i < $nrows; $i ++ ){ for ($ i = 0; $ i <$ nRows, $ i + +) (

$ row = mysql_fetch_assoc ($ resultat);
extrakt ($ rad);
/ / Ersätt $ e-post med oavsett vilken kolumn med e-postadresser kallas
$ till = "$ e";
/ / Skicka e-post till varje e-post i databasen
if (mail ($ till, $ ärendet, $ meddelande, $ från)) (

/ / Skriv ut namnet på e-postmeddelanden som skickades. Jag använder det här bara att se till att programmet har inte frysas. I teorin sina bör en stadig ström av namn kan tryckas>

); echo ( "$ till <br/>");

)

)




?>

Denna bit av kod tar fördel av php mail ()-funktionen. Detta är ett mycket kraftfullt och enkelt att använda funktionen. Kom ihåg att med stor makt kommer stort ansvar. Prova att inte använda funktionen till det onda.

| Kommentarer

Hur du manuellt infoga en användare i ett SMF forum använder PHP

Publicerad i SMF (Simple Machine Forum), php av ShortLikeAFox den 28 juli 2008

Detta konkret exempel är för SMF 1.1.5. Jag kan inte garantera att det kommer att fungera med någon annan version.

Så du kör Simple Machine Forum Software och vill ange en användare? Inga problem. Jag vet att detta problem verkar mycket specifika, men de idéer som beskrivs här kan anpassas till andra typer av forum och andra databas drivs programvarupaket som Wordpress. Innan vi får till exakt hur man gör detta, låt oss ta en titt på hur Simple Machine Forum håller reda på användarna. I SMF databas finns en tabell som kallas smf_members. Den smf_members struktur ser ut så här:

Fält Typ Null

Nyckel Standard Extra
ID_MEMBER mediumint (8) osignerade NEJ PRI NULL auto_increment
memberName Varchar (80) NEJ MUL
dateRegistered int (10) osignerade NEJ MUL 0
tjänster mediumint (8) osignerade NEJ MUL 0
ID_GROUP smallint (5) osignerade NEJ MUL 0
lngfile tinytext NEJ MUL
lastLogin int (10) osignerade NEJ MUL 0
realname tinytext NEJ
chattmeddelanden smallint (5) NEJ 0
unreadMessages smallint (5) NEJ 0
buddy_list text NEJ
pm_ignore_list text NEJ
messageLabels text NEJ
passwd Varchar (64) NEJ
Epostadress tinytext NEJ
personalText tinytext NEJ
kön tinyint (4) osignerade NEJ 0
Födelsedatum datum NEJ MUL 0001-01-01
websiteTitle tinytext NEJ
websiteUrl tinytext NEJ
plats tinytext NEJ
ICQ tinytext NEJ
AIM Varchar (16) NEJ
YIM Varchar (32) NEJ
MSN tinytext NEJ
hideEmail tinyint (4) NEJ 0
showOnline tinyint (4) NEJ 1
Tidsformat Varchar (80) NEJ
signatur text NEJ
timeOffset float NEJ 0
avatar tinytext NEJ
pm_email_notify tinyint (4) NEJ 0
karmaBad smallint (5) osignerade NEJ 0
karmaGood smallint (5) osignerade NEJ 0
usertitle tinytext NEJ
notifyAnnouncements tinyint (4) NEJ 1
notifyOnce tinyint (4) NEJ 1
notifySendBody tinyint (4) NEJ 0
notifyTypes tinyint (4) NEJ 2
memberIP tinytext NEJ
memberIP2 tinytext NEJ
secretQuestion tinytext NEJ
secretAnswer Varchar (64) NEJ
ID_THEME tinyint (4) osignerade NEJ 0
is_activated tinyint (3) osignerade NEJ 1
validation_code Varchar (10) NEJ
ID_MSG_LAST_VISIT int (10) osignerade NEJ 0
additionalGroups tinytext NEJ
smileySet Varchar (48) NEJ
ID_POST_GROUP smallint (5) osignerade NEJ MUL 0
totalTimeLoggedIn int (10) osignerade NEJ 0
passwordSalt Varchar (5) NEJ

Områden som vi måste uppmärksamma:

  • memberName - Self Explanitory.
  • dateRegistered - är inte nödvändigt, men om inte fyllt i datum registreras visas som den 31 december 1969. I dag sparas som en epok tidsstämpel. Vet inte hur man kan beräkna tidstämplar i ditt huvud? Inga problem. Jag använder den fria generator hittar du här.
  • realname - bör införas. När jag inte är säker på att jag bara upprepa memberName här.
  • Epostadress - Self Explanitory.
  • is_activated - måste sättas till 1 eftersom vi manuellt aktivera en medlem.
  • ID_POST_GROUP - Jag ska inte ljuga. Jag är inte säker på vad det är, men det verkar alltid vara inställd på 4. Så .... Jag har alltid ställa in den till 4. Inte det bästa sättet att programmera, men vad ska man göra?
  • passwd - Det lösenord du vill ge den nya användaren. Det är omöjligt att lista ut hur du in utan att titta på SMF dokumentation. Rätt kod för att kryptera ett SMF lösenord för databasen ser ut så här:

($memberName).$password) $ passwd = SHA1 (strtolower ($ memberName). $ lösenord)

I ovanstående rad kod, $ lösenord är användarens faktiska lösenord.

Hur man gör:

/ / First, ansluta till SMF databas

$ värd = "hostname", / / Host namn
$ username = "användarnamn", / / Mysql användarnamn
$ mittlösenord = "lösenord", / / Mysql lösenord
$ db_name = "användarnamn", / / Database namnet

("cannot connect to server"); mysql_connect ( "$ host", "$ username", "$ mittlösenord") eller dö ( "inte kan ansluta till servern");
("cannot select DB"); mysql_select_db ( "$ db_name") eller dö ( "kan inte välja BF");

$ memberName = "ironMan";
$ realname = "Tony Stark";
$ Epostadress = "ironMan@ironMan.com";
$ is_activated = 1;
$ ID_POST_GROUP = 4;

$ lösenord = "Tony1234";

($memberName).$password); $ lösenord = SHA1 (strtolower ($ memberName). $ password);

$ dateRegistered = 1216951200; / / 7-25-2008 2 AM

$ query = "infoga i smf_members (memberName, realname, Epostadress, is_activated, ID_POST_GROUP, passwd, dateRegistered) värden (" $ memberName "," $ realname "," $ Epostadress', '$ is_activated "," $ ID_POST_GROUP "," $ lösenord "," $ dateRegistered ")";
("SMF Error 101.234 "); $ result = mysql_query ($ query) eller dö ( "SMF Fel 101.234");

Det är allt till det!

| Kommentarer