NePo
Rugsėjis 19, 2007

Siuntinėjame laiškus

Tikiuosi jau skaitėte Armando straipsnį ir susipažinote su laiškų siuntimo pagrindais. Taigi dabar galime pakalbėti apie aukštesnę siuntimo formą, kai ne pats rašai visą kodą, o pasinaudoji jau sukurtais tobulais įrankiais - PHPMailer.

PHPMailer - turbūt reikėtų pavadinti milžinišku laiškų siuntimo įrankiu, kuris galėtų patenkinti didžiausią gurmaną. Čia pateiksiu labai nedidelį, paprastą pavyzdėlį, kurio man prireikė.
Prieš pateikdamas PHP kodą, dar supažindinsiu su MySQL lentele, kuri man buvo taip pat reikalinga:

CREATE TABLE  `mailsend` (
  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `title` varchar(250) DEFAULT NULL,
  `mail` varchar(250) DEFAULT NULL,
  `text` text DEFAULT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Lentelė labai paprasta, dabar galime pereiti prie PHP kodo.

require("class.phpmailer.php");

Pirmiausiai įsitraukiam phpmailer klasę

$mail = new PHPMailer();

Ir susikuriam pašto objektą su kuriuo dirbsim

$mail->From ="noreply@pixel.lt";
$mail->FromName = "Nobody";

Apsirašome siuntėjo laukus

$mailsub ="Newsletter: ";
$mail->WordWrap = 50;

WordWrap - kiek žodžių norime matyti vienoje eilutėje arba, kitaip sakant, po kiek žodžių norite, kad PHPMailer klasė automatiškai sudėliotų “enter” - naujos eilutės simbolius.

$mail->IsHTML(true);

Nustatome laiškų siuntimo formatą - HTML.

$result = mysql_query("SELECT * FROM mailsend" );
	while( $row =  mysql_fetch_array($result) )
	{
	$mail->ClearAddresses();
           $mail->AddAddress($row['mail']);

Atkreipkite dėmesį, jog siuntimas vyksta cikle. Jeigu tik sudėtumėte visus adresus, kuriems išsiunčiame laiškus, tai gavėjai juos matytų, o jeigu dar sugalvotumėte “atsakyti visiems” (angl. “replay to all”)… Jeigu pridėtume po vieną cikle, o ne išvalytume irgi būtų negerai, nes pirmajam jūsų naujienlaiškių skaičius tikrai nepatiktų.

	  $mail->Subject = $mailsub." ".$row['title'];
	   $mail->Body =$row['text'];
	 $mail->Send(); 
	}

Laiško antraštę formuoju iš standartinio žodžio ir naujienos pavadinimo, o į laiško turinį įdedu naujienos turinį. Ir savaime suprantama, paskutinioji komanda yra siųsti.

Štai ir visas kodas, kurį norėjau parodyti. Laiškus siuntinėti dabar labai paprasta: nereikia rūpintis dėl antraščių, formatų ir kitų dalykų, nes viską už jus padaro PHPMailer
Daugiau pavyzdžių galite rasti čia

Atnaujinta 2007-09-10 16:45: pataisyta klaida, kurią pastebėjo Armandas.

Panašūs straipsniai


“Siuntinėjame laiškus” komentarų: 3

  1. Armandas

    $mail->From turėtų būti pašto adresas, o $mail->FromName - vardas. Pasitaisykit ;)

  2. tomas

    Mokinat vaikus spamint? :)

  3. edga

    galit pasakiti kaip dadarit kaska panasaus i ceta ar forua ?

Rašyti komentarą

Jūs privalote prisijungti jeigu norite rašyti komentarą.