Hoe kan ik in php met mail() de juiste afzender krijgen? smtp

Als u de mail() functie van PHP gebruikt dan krijgt u als afzender accountnaam@uwdomein.xx. Dat is niet te wijzigen en zal fouten opleveren of zal tot gevolg hebben dat de mail als spam gezien wordt.
Het beste is om gebruik te maken van SMTP. Op het net zijn vele gratis php classes hiervan te vinden. Dan wordt de mail via smtp verstuurd en kan de afzender eenvoudig bepaald worden.

Wij installeren pear op al onze servers voor dit doel. Kijk op http://pear.php.net/ voor meer info:

Een PHP voorbeeld. U kunt de functie stuurmail in een aparte php file plaatsen en deze includen in uw programma. Vanuit uw programma kunt u dan de functie stuurmail() aanroepen met de juiste parameters.
Mocht u een foutmelding krijgen over het te includen Mail.php neemt u dan even contact met ons op, het kan zijn dat open_basedir voor u uitgezet moet worden.
<?php
echo 'Testmail programma';
stuurmail("vanadres", "naardres","onderwerp","tekst","html");

// ********************************************************************************************************************
function stuurmail($from, $to, $subject, $mailtekst, $mailhtml, $files = array(), $filenames = array()) {
// ********************************************************************************************************************
//set_include_path("/usr/local/lib/php" . PATH_SEPARATOR . ini_get(”include_path”));

// Op de websitepanel servers is de set_include_path niet nodig.

  // $to        = het emailadres waar de mail heen moet.
// $subject = het onderwerp van de mail
// $mailtekst = De email in tekstvorm
// $mailhtml = De email in htmlvorm
// $files = De files die verstuurd moeten worden, moet een array zijn
// $filenames = De namen die u wilt geven aan de te versturen files, ook een array
// $from = Uw emailadres, moet in principe een emailadres in het domein zijn.

require_once 'Mail.php';
require_once 'Mail/mime.php';
$host = "localhost"; // Als u mail via een andere smtp server wilt versturen vult u die hier in.
$username = ""; // Vul hier het emailadres in van de mailbox waar u mail vandaan verstuurd
  $password = ""; // Vul hier het wachtwoord in van de mailbox waar u mail vandaan verstuurd

  $mime = new Mail_mime();
$mime->setTXTBody($mailtekst);
$mime->setHTMLBody($mailhtml);

$extraheaders = array('From' => $from,
'To' => $to,
'Date' => date( 'r' ),
'Subject' => $subject);
$recipients['To'] = $to;
//$recipients['Bcc'] = ''; // optioneel als u een BCC wilt

IF (!is_array($files)) $files = array($files);
IF (!is_array($filenames)) $filenames = array($filenames);

foreach ($files as $key => $value):
IF (stripos($value,".pdf") > 0) $serverFileMimeType = "Application/pdf";
ELSE $serverFileMimeType = "text/html";

IF ($value <> "") $mime->addAttachment($value, $serverFileMimeType, $filenames[$key]);
  endforeach;

  $smtp = Mail::factory('smtp',
                      array ('host' => $host,

                      'port' => 587,
                      'auth' => "PLAIN",

                      'socket_options' => array('ssl' => array('verify_peer_name' => false)),

                      'username' => $username,
                      'password' => $password));

  $body = $mime->get();  
$headers = $mime->headers($extraheaders);
  $result = $smtp->send($recipients, $headers, $body);

  IF (PEAR::isError($result)):
echo $result->getMessage() . "_________________________________________" . $mime->getMessage();
  ENDIF;

  RETURN;
}
?>

Was dit antwoord nuttig? 0 gebruikers vonden dit artikel nuttig (0 Stemmen)