Wie bekomme ich in PHP mit mail() den richtigen Absender? SMTP
Wenn Sie die PHP-Funktion mail() verwenden, erhalten Sie als Absender accountname@ihre-domain.xx. Das lässt sich nicht ändern und führt zu Fehlern oder dazu, dass die Mail als Spam eingestuft wird.
Besser ist es, SMTP zu verwenden. Im Netz gibt es dafür viele kostenlose PHP-Klassen. Die Mail wird dann per SMTP verschickt, und der Absender lässt sich einfach festlegen.
Eine beliebte Lösung ist PHPMailer
Außerdem können Sie mit PEAR Mail direkt über SMTP mailen. Das ist vor allem bei Formularen oder individuellen Skripten praktisch.
https://pear.php.net/package/Mail
https://pear.php.net/package/Net_SMTP
https://pear.php.net/package/Auth_SASL
Beispiel: SMTP-Mail mit PEAR versenden
<?php
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT);
// PEAR Mail laden
require_once 'Mail.php';
// SMTP-instellingen
$smtp_host = 'ssl://mail.server.tld';
$smtp_port = 465;
$smtp_user = 'user@domein.nl';
$smtp_pass = 'wachtwoord';
// E-mailgegevens
$to = 'ontvanger@domein.nl';
$from = 'user@domein.nl';
$subject = 'Testbericht';
$body = 'Dit is een testmail verzonden via SMTP.';
$reply = 'user@domein.nl';
// Headers
$headers = array(
'From' => $from,
'To' => $to,
'Subject' => $subject,
'Reply-To' => $reply
);
// SMTP object
$smtp = Mail::factory('smtp', array(
'host' => $smtp_host,
'port' => $smtp_port,
'auth' => true,
'username' => $smtp_user,
'password' => $smtp_pass
));
// Mail verzenden
$result = $smtp->send($to, $headers, $body);
if (PEAR::isError($result)):
echo $result->getMessage();
else:
echo 'E-mail succesvol verzonden';
endif;
