Hvordan får jeg den rigtige afsender med mail() i PHP? SMTP
Hvis du bruger PHP's mail()-funktion, får du kontonavn@ditdomæne.xx som afsender. Det kan ikke ændres og vil give fejl eller betyde, at mailen bliver set som spam.
Det bedste er at bruge SMTP. På nettet findes mange gratis PHP-klasser til det. Så bliver mailen sendt via SMTP, og afsenderen kan nemt bestemmes.
En meget brugt mulighed er PHPMailer
Desuden kan du også sende mail direkte via SMTP med PEAR Mail. Det er især praktisk ved formularer eller specialudviklede scripts.
https://pear.php.net/package/Mail
https://pear.php.net/package/Net_SMTP
https://pear.php.net/package/Auth_SASL
Eksempel: send SMTP-mail med PEAR
<?php
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT);
// Indlæs PEAR Mail
require_once 'Mail.php';
// SMTP-indstillinger
$smtp_host = 'ssl://mail.server.tld';
$smtp_port = 465;
$smtp_user = 'user@domein.nl';
$smtp_pass = 'adgangskode';
// E-mailoplysninger
$to = 'modtager@domein.nl';
$from = 'user@domein.nl';
$subject = 'Testbesked';
$body = 'Dette er en testmail sendt via SMTP.';
$reply = 'user@domein.nl';
// Headers
$headers = array(
'From' => $from,
'To' => $to,
'Subject' => $subject,
'Reply-To' => $reply
);
// SMTP-objekt
$smtp = Mail::factory('smtp', array(
'host' => $smtp_host,
'port' => $smtp_port,
'auth' => true,
'username' => $smtp_user,
'password' => $smtp_pass
));
// Send mailen
$result = $smtp->send($to, $headers, $body);
if (PEAR::isError($result)):
echo $result->getMessage();
else:
echo 'E-mailen er sendt';
endif;
