Hogyan állíthatom be a helyes feladót PHP-ben a mail() függvénnyel? SMTP
Ha a PHP mail() függvényét használja, a feladó fioknev@sajatdomain.xx lesz. Ez nem módosítható, és hibákhoz vezethet, vagy ahhoz, hogy a levelet spamnek tekintik.
A legjobb megoldás az SMTP használata. Az interneten számos ingyenes PHP-osztályt talál erre. Ekkor a levél SMTP-n keresztül megy el, és a feladó könnyen megadható.
Gyakran használt megoldás a PHPMailer
Emellett a PEAR Mail segítségével is küldhet levelet közvetlenül SMTP-n keresztül. Ez főként űrlapoknál vagy egyedi szkripteknél hasznos.
https://pear.php.net/package/Mail
https://pear.php.net/package/Net_SMTP
https://pear.php.net/package/Auth_SASL
Példa: SMTP-levél küldése PEAR-rel
<?php
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT);
// PEAR Mail betöltése
require_once 'Mail.php';
// SMTP-beállítások
$smtp_host = 'ssl://mail.server.tld';
$smtp_port = 465;
$smtp_user = 'user@domein.nl';
$smtp_pass = 'jelszo';
// E-mail adatai
$to = 'cimzett@domein.nl';
$from = 'user@domein.nl';
$subject = 'Tesztüzenet';
$body = 'Ez egy SMTP-n keresztül küldött tesztlevél.';
$reply = 'user@domein.nl';
// Fejlécek
$headers = array(
'From' => $from,
'To' => $to,
'Subject' => $subject,
'Reply-To' => $reply
);
// SMTP-objektum
$smtp = Mail::factory('smtp', array(
'host' => $smtp_host,
'port' => $smtp_port,
'auth' => true,
'username' => $smtp_user,
'password' => $smtp_pass
));
// Levél küldése
$result = $smtp->send($to, $headers, $body);
if (PEAR::isError($result)):
echo $result->getMessage();
else:
echo 'Az e-mail elküldése sikerült';
endif;
