įžanga
šiame straipsnyje rasite kaip siųsti el. paštus non-MIME formatu. Jei jums reikia straipsnio kuriame aiškinama apie MIME el. pašto formatą bei jo headerius apsilankykite Zend'e. Kas jau turi mail() pagrindus, ir norėjo šiek tiek nuodugniau paskaityti apie header'ius meil'o, praleiskite dvi žemiau esančias dalis

php.ini konfiguravimas
visų pirma norėjau atkreipti visų dėmesį, kad dažniausiai jei jūs testuojates po Windows platforma jums mail() funkcija neveiks. Neveiks todėl kad php.ini faile pagal nutylėjimą SMTP serveris nurodytas localhost, o didžiausia tikymybė yra ta kad pas jus po localhost SMTP serverio nėra (nebent sėdite po Windows Server), todėl savo ekrane matysite tik štai tokį užrašą: Warning: Failed to Connect in c:\kelias\kelias\failas.php on line XX. Štai tai apie ką jums ir sakiau: php negali prisijungti prie SMTP serverio.
To galite išvengti įrašę php.ini faile SMTP=jums_žinomas_smtp_serverio_adresas. Jei pas jus PHP ne kaip CGI neužmirškite restartuoti Apache serverio.

pradmenys
taigi, ką daro mail() funkcija? mail() funkcija leidžia jums siųsti el.pašta tiesiai iš jūsų kodo. Ji dažniausiai naudojama kontaktų, registravimo formose. Kai tam tikru meil'u norima informuoti apie užpildytą formą. Bet pritaikymo būdų yra begalė.

bool mail(string to, string subject, string message [, string additional_headers [, string additional_parameters ])

mail funkcija gražina boolean tipą (true/false). Jei mail funkcija gražina false reiškia el. pašto išsiųsti nepavyko. Štai kaip siunčiamas paprasčiausias el.paštas:

<?
mail('[email protected]','Čia norima tema (subject)','Ir einanti žinutė');
?>

Taigi kaip matote pirmasis mail argumentas, tai el. pašto adresas kuriam siunčiate el.paštą, paskui eina Subject'as (norima tema), o po subject'o ir žinutės tekstas. Žinutės texte norint nukelti teksta į naują eilutę įterpkite \n (new line|nauja eilutė), pvz.:

<?$tekstas = "mano žinutė\n\nNikolajus Krauklis\naka DzHiBaS";?>

Po žinutės gali eiti papildomi parametrai: headeriai, bei kiti papilomi parametrui sendmail'ui ir t.t.

Tik išsiuntus šį el. paštą pastebėsite kad el.žinutėje nėra (kaikurių) lietuviškų raidžių. Jų nėra dėl netinkamos el.žinutės koduotės. Žinutės koduotė yra nustatoma žinutės headeryje (antraštėje).

antraštės (headeriai)
pastaba: žinutės antraštės yra atskiriamos "\r\n".

headeriuose galima nurodyti daug įdomių bei naudingu dalyjų: nuo ko siunčiamas laiška, laiško koduotė, reply-to laukas, meileris, bcc ir t.t. Štai pavizdys paprasčiausio headerio kuris turėtu būti kiekviename laiške:

<?
$header = "Content-type: text/plain; charset=\"windows-1257\"\r\n";
$header .= "From: Nikolajus Krauklis <mano@el_pastas.lt>\r\n";
$header .= "Reply-to: mano@el_pastas.lt\r\n";

mail('[email protected]','Cia norima tema (subject)','Ir einanti žinute',$header);

?>

Content type nurodome kad žinutė bus plain tekstu (ne HTML) bei windows-1257 charset'u. Išsiuntus laišką su šiuo headeriu esu isitikinęs kad windows vartotojai gaus jūsų išsiųsta el.žinutė su visom lietuviškom raidėm.
From headeryje nurodome nuo ko siunčiamas laiškas. Siuntėjas/gavėjas gali būti norodomas štai tokiais formatais:

<?
/*
* paste iš kažkokio RFC susijusio su meil'ais
*
* From: [email protected]
* From: [email protected] (Mark Horton)
* From: Mark Horton <[email protected]>
* From: "Mark Horton" <[email protected]>
*/
?>

Reply-to tikriausiai jau patys supratote kam reikalingas? Pagal nutylėjima jei nėra reply-to jūsų meil'eris darys reply asmeniui kuris atsiuntė šį laišką, bei jei yra reply-to, paspaudus meileryje (outlook'e, bat'e, mutt'e ir t.t.) reply, tai to: lauke atsiras reply-to el.pašto adresas.
Štai dar papildomi headeriai kurie gali praversti:

<?
$headers .= "X-Mailer: mano PHP meileris\r\n"; // maileris
$headers .= "X-Priority: 3\r\n"; // žinutės tipas: 1 UrgentMessage, 3 Normal
$headers .= "Return-Path: <[email protected]>\r\n"; //kur gražinti meilą ištikus klaidai

mail('[email protected]','Cia norima tema (subject)','Ir einanti žinute',$headers);
?>

X-Mailer - tai niekur nedominuojantis headeris. Priority - dažnai pastebite kad būna žinutės su šauktuku šone, ten žymimi prioritetai. jei uždėsite prioritetą 1 - tai reiškia žinutė yra auksčiausio prioriteto ir prie el.žinutės gavėjo el.pašto programoje atsiras raudonas šauktukas. Dažniausiai visi siunčia el.žinutes su 3 (normaliu) prioritetu.
Return-path - tai el.pašto adresas į kurį bus nukreipiamos visos klaidas (pvz.: el.žinutė nepasiekė reikiamo nusmigusio serverio, arba tokio el.pašto adreso adresas jau nebeegzistuoja sistemoje)

Kaip nusisiųsti el.žinutės kopiją sau? Yra tris galimybės:
1. pats paprasčiausias tai nurodyti to lauką štai taip:

<?
$to = "Kažkoks vartotojas <[email protected]>" . ", ";
$to .= "Nikolajus Krauklis <[email protected]>";

mail($to,'Žinutė dviems gavėjams','Tekstas');
?>


2. savo el.pašto adresą nurodyti Cc headerio lauke:

<?
$header .= "cc: [email protected]\r\n";
?>

Šiuo atveju visi gavėjai matys kam buvo siunčiamas gautas el.paštas.

3. Naudotis headerio Bcc lauku:

<?
$header .= "bcc: [email protected]\r\n";
?>

dabar gavėjai niekaip nepastebės kad meil'o kopija buvo siųsta ir man!!! :)

conclusion
na va berods viską ir išaiškinau. Norėjau pridurti ir tai kad el.žinutės gali būti siunčiamos ir HTML formatu, tada headeris atrodytu taip:
<?$header = "Content-type: text/html; charset=\"windows-1257\"\r\n";?>
Dabar el. žinutėje galite naudoti ir HTML tagus (pastaba: ne visi meileriai turi galimybė rodyti el.žinutes HTML formatu).
---
[^] Atgal
[«] Skaitykla

* * Gen. time: 0.0315
* © xneox.com