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.”;

?>

 

[note type=”tip”] Ha valaki az smtp.gmail.com-ot használja smtp
szervernek akkor a példaprogramba egy plusz sort kell betennie:

$mail->SMTPSecure = ‘ssl’; [/note]