phpbar.de logo

Mailinglisten-Archive

[php] mail() mit sendmail

[php] mail() mit sendmail

Götz Lohmann goetz at mrblackrose.de
Mit Nov 17 11:04:50 CET 2004


ANGEL Harald schrieb:

>Hi!
>
>Ich will auf meinem Intranet-Apache-PC die Funktion mail() verwenden.
>
>Mach ich:
>
><?
>mail("meinname at mydomain.com", "My Subject", "test");
>?>
>
>Kommt nur: Fatal error: Call to undefined function: mail() in
>/srv/www/htdocs/test/mail.php on line 22
>
>Ok, danach hab ich sendmail installiert, den sendmail_path in der
>php.ini angepasst und mit "rcapache2 restart" den apache neu gestartet.
>Funktionieren tut es aber immer noch nicht...
>
>Kann mir von euch wer sagen, wo mein Problem liegt?
>
>Danke, Harald
>  
>
Auf manchen Systemen ist sendmail bzw. mail() ausgeschaltet .. um das zu 
umgehen kann man auch direkt per Socket arbeiten ;-) .. das Skript unten 
meldet sich direkt am lokalen Mailserver an und verschikt darüber die 
Nachricht .. ;-)

<?php
    /* *************************************** *\
     * Sendmail Funktionalitaet per Socket :-D *
    \* *************************************** */
    function socketmail($toArray, $subject, $message) {
       // Uebrgabe Parameter ist ein Array als Empfaengerliste
       // $toArray format --> array("Name1" => "address1", "Name2" => 
"address2", ...)
       // Sender eMail Adresse setzen
       $fromuser = "user at domain.com"; // ### FROM user eMail
       $username = "Username";        // ### FROM user Name
       // initialisiere und oeffne Socket
       ini_set(sendmail_from, $fromuser);
       $rcv = fgets($connect, 1024);
       // beim lokalen Mail-Server mittels HELO anmelden
       fputs($connect, "HELO {$_SERVER['SERVER_NAME']}\r\n");
       $rcv = fgets($connect, 1024);
       // fuer alle Empfaenger in der Liste ..
       while (list($toKey, $toValue) = each($toArray)) {
          // Absender setzten
          fputs($connect, "MAIL FROM:$fromuser\r\n");
          $rcv = fgets($connect, 1024);
          // Empfaenger setzten
          fputs($connect, "RCPT TO:$toValue\r\n");
          $rcv = fgets($connect, 1024);
          // Daten folgen lassen
          fputs($connect, "DATA\r\n");
          $rcv = fgets($connect, 1024);
          // Header senden
          fputs($connect, "Subject: $subject\r\n");           // Betreff
          fputs($connect, "From: $username <$fromuser>\r\n"); // Absender
          fputs($connect, "To: $toKey  <$toValue>\r\n");      // Empfaenger
          fputs($connect, "X-Sender: <$fromuser>\r\n");
          fputs($connect, "Return-Path: <$fromuser>\r\n");    // 
Rueckantwort
          fputs($connect, "Errors-To: <$fromuser>\r\n");
          fputs($connect, "X-Mailer: PHP".phpversion()."\r\n");
          fputs($connect, "X-Priority: 3\r\n");
          fputs($connect, "Content-Type: text/plain; 
charset=iso-8859-1\r\n");
          fputs($connect, "\r\n");
          // Nachricht anhaengen
          fputs($connect, stripslashes($message)." \r\n");
          fputs($connect, ".\r\n");
          $rcv = fgets($connect, 1024);
          // Empfaenger abschliessen             
          fputs($connect, "RSET\r\n");
          $rcv = fgets($connect, 1024);
       }
       // Email fertig, Socket beenden!
       fputs ($connect, "QUIT\r\n");
       $rcv = fgets ($connect, 1024);
       fclose($connect);
       ini_restore(sendmail_from);
    }

    /* 
*************************************************************************** 
*\
     * Funktion um eine eMail anhand der Hostnamens und DNS auf echtheit 
zu testen *
    \* 
*************************************************************************** 
*/
    function checkmail($email) {
       if 
(eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,3}$", 
$email, $check)) {
          if(getmxrr(substr(strstr($check[0], '@'), 1), 
$validate_email_temp)) { return true; }
          if(checkdnsrr(substr(strstr($check[0], '@'), 1),"ANY")){ 
return true; }
       }
       return false;
    }
?>

regards, G. Lohmann



php::bar PHP Wiki   -   Listenarchive