Hvordan får jeg riktig avsender med mail() i PHP? SMTP
Bruker du PHP-funksjonen mail(), får du kontonavn@dittdomene.xx som avsender. Det kan ikke endres og vil gi feil eller føre til at e-posten blir sett på som spam.
Det beste er å bruke SMTP. På nettet finnes mange gratis PHP-klasser for dette. Da sendes e-posten via SMTP, og avsenderen kan enkelt bestemmes.
Et mye brukt alternativ er PHPMailer
Det er også mulig å sende e-post direkte via SMTP med PEAR Mail. Det er særlig nyttig for skjemaer eller skreddersydde skript.
https://pear.php.net/package/Mail
https://pear.php.net/package/Net_SMTP
https://pear.php.net/package/Auth_SASL
Eksempel: Sende SMTP-e-post med PEAR
<?php
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT);
// Last inn PEAR Mail
require_once 'Mail.php';
// SMTP-innstillinger
$smtp_host = 'ssl://mail.server.tld';
$smtp_port = 465;
$smtp_user = 'user@domein.nl';
$smtp_pass = 'passord';
// E-postopplysninger
$to = 'mottaker@domein.nl';
$from = 'user@domein.nl';
$subject = 'Testmelding';
$body = 'Dette er en test-e-post sendt via SMTP.';
$reply = 'user@domein.nl';
// Headere
$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 e-posten
$result = $smtp->send($to, $headers, $body);
if (PEAR::isError($result)):
echo $result->getMessage();
else:
echo 'E-posten ble sendt';
endif;
