Miért nem lehet simán a mail() függvény használatával levelet küldeni?
A mail() függvény meghívásával bárki küldhetett e-mailt, a rendszer ezt minden ellenőrzés nélkül továbbította eddig, azonban ez a módszer nem nyújt kellő biztonságot a levélhamisítások, támadások ellen, ezért szükséges bevezetnünk az SMTP szerver kötelező használatát.
Mit jelent az SMTP hitelesítést?
Az SMTP szerver csak akkor küldi tovább levelünket, ha érvényes e-mail címmel és jelszóval rendelkezünk. Ugyanezt a módszert kell használni, amikor pl. Outlook vagy Thundenbird levelezőprogrammal küldünk e-mailt a szerveren keresztül.http://tarhelydomain.com/tudastar/e-mail/microsoft-outlook-2003-beallitasa/
Hogyan küldhetsz SMTP hitelesítéssel e-mailt?
Az Interneten sok-sok ingyenesen letöltehető PHP kód taláható. Ezek közül a PHP Mailert javasoljuk: PHPMailer
Ezt le kell tölteni és fel kell rakni a weboldal tárhelyére ahhoz, hogy működjön a levélküldés. Kicsomagolás után nevezd át pl. phpmailer-re, majd a példaprogramban látható „require” sorba a tárhelyre történt feltöltés után útvonalat kell beírnod. Ha azonos mappában van, mint a példafájlt, akkor használhatod az alábbi útvonalat.
Példaprogram:
<?php
require(„phpmailer/class.phpmailer.php”);$mail = new PHPMailer();
/**** SMTP szerver használata ****/
$mail->IsSMTP();/**** SMTP szerver domain neve vagy IP címe ****/
$mail->Host = „mail.domainneved.hu”;/**** Hitelesítés bekapcsolása, KÖTELEZŐ (SMTP authentication) ****/
$mail->SMTPAuth = true;/**** E-mail cím ****/
$mail->Username = „teszt.elek@domainneved.hu”;/**** Jelszó ****/
$mail->Password = „nagyontitkos”;/**** Feladó e-mail címe ****/
/**** FONTOS!!! ÉRVÉNYES, SZERVEREN LÉTEZŐ E-MAIL LEGYEN! ****/
/**** FELADÓ HAMISÍTÁSA NEM LEHETSÉGES ****/
$mail->From = „teszt.elek@domainneved.hu”;/**** Feladó neve ****/
$mail->FromName = „Teszt Elek”;/**** Címzett e-mail címe, neve ****/
$mail->AddAddress(„cimzett@domainnev.hu”, „Próba János”);
//$mail->AddAddress(„cim@domainnev.hu”);
// címzett e-mail címe, név nem kötelező//$mail->AddReplyTo(„webmaster@domainneved.hu”, „Webmaster”);
$mail->WordWrap = 50; // sortörés 50 karakter
$mail->IsHTML(true); // HTML formátum beállítása$mail->Subject = „Teszt levél”;
$mail->Body = „Teszt e-mail küldése SMTP hitelesítéssel!”;if(!$mail->Send())
{
echo „Nem sikerült az e-mail küldése. <p>”;
echo „Hiba: ” . $mail->ErrorInfo;
exit;
}
else echo „Levél sikeresen elküldve.”;?>
szervernek akkor a példaprogramba egy plusz sort kell betennie:
$mail->SMTPSecure = ‘ssl’; [/note]