Outils pour utilisateurs

Outils du site


braveo:classemail

Différences

Ci-dessous, les différences entre deux révisions de la page.


Révision précédente
braveo:classemail [2024/04/16 22:20] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +==== MAIL.class.php ====
 +
 +<code PHP>
 +<?php
 +
 +/******************************************************************************/
 +/*                                                                            */
 +/*      _ ____ _ ____ ____ _  _    ___  _  _    _    _ ___  ____ ____       */
 +/*     |\/| |__| | [__  |  | |\ |    |  \ |  |    |    | |__] |__/ |___       */
 +/*      | |  | | ___] |__| | \|    |__/ |__|    |___ | |__] |  \ |___       */
 +/*                                                                            */
 +/******************************************************************************/
 +/*                                                                            */
 +/* Titre          : MAIL.class.php                                            */
 +/*                                                                            */
 +/* URL            : http://mdl29.net                                          */
 +/* Auteur :       : Ivan Priorov                                              */
 +/* Modification   : Arnaud                                                    */
 +/* Date édition   : Novembre 2010                                             */
 +/*                                                                            */
 +/*                                                                            */
 +/******************************************************************************/
 +
 +
 +
 +
 +
 +class Mail {
 +
 +    private $smtpServer = 'mail.mdl29.net';
 +
 +    private $port = '25';
 +
 +    private $timeout = '45';
 +
 +   // private $from = 'maison-du-libre@mdl29.net';
 +
 +    private $newline = "\r\n";
 +
 +    private $localdomain = 'mail.mdl29.net';
 +
 +    private $charset = 'utf-8';
 +
 +    private $contentTransferEncoding = false;
 +
 +
 +
 +    // Do not change anything below
 +
 +    private $smtpConnect = false;
 +
 +    
 +
 +    private $from = false;
 +
 +    private $to = false;
 +
 +    private $subject = false;
 +
 +    private $message = false;
 +
 +    private $headers = false;
 +
 +    private $logArray = array(); // Array response message for debug
 +
 +    private $Error = '';
 +
 +
 +
 +    public function __construct($from, $to, $subject, $message) {
 +
 +        $this->from = &$from;
 +
 +        $this->to = &$to;
 +
 +        $this->subject = &$subject;
 +
 +        $this->message = &$message;
 +
 +        // Connect to server
 +
 +        if(!$this->Connect2Server()) {
 +
 +        // Display error message
 +
 +            echo $this->Error.$this->newline.'<!-- '.$this->newline;
 +
 +            print_r($this->logArray);
 +
 +            echo $this->newline.'-->'.$this->newline;
 +
 +            return false;
 +
 +        }
 +
 +        return true;
 +
 +    }
 +
 +
 +
 +    private function Connect2Server() {
 +
 +        // Connect to server
 +
 +        $this->smtpConnect = fsockopen($this->smtpServer,$this->port,$errno,$error,$this->timeout);
 +
 +        $this->logArray['CONNECT_RESPONSE'] = $this->readResponse();
 +
 +
 +
 +        if (!is_resource($this->smtpConnect)) {
 +
 +            return false;
 +
 +        }
 +
 +        $this->logArray['connection'] = "Connection accepted: $smtpResponse";
 +
 +        // Hi, server!
 +
 +        $this->sendCommand("HELO $this->localdomain");
 +
 +        $this->logArray['HELO'] = $this->readResponse();
 +
 +          
 +
 +        // "From" mail...
 +
 +        $this->sendCommand("MAIL FROM: $this->from");
 +
 +        $this->logArray['MAIL_FROM_RESPONSE'] = $this->readResponse();
 +
 +        if (substr($this->logArray['MAIL_FROM_RESPONSE'],0,3)!='250') {
 +
 +            $this->Error .= 'Mistake in sender\'s address! '.$this->logArray['MAIL_FROM_RESPONSE'].$this->newline;
 +
 +            return false;
 +
 +        }
 +
 +        // "To" address
 +
 +        $this->sendCommand("RCPT TO: $this->to");
 +
 +        $this->logArray['RCPT_TO_RESPONCE'] = $this->readResponse();
 +
 +        if (substr($this->logArray['RCPT_TO_RESPONCE'],0,3)!='250') {
 +
 +            $this->Error .= 'Mistake in reciepent address! '.$this->logArray['RCPT_TO_RESPONCE'].$this->newline;
 +
 +        }
 +
 +        // Send data to server
 +
 +        $this->sendCommand('DATA');
 +
 +        $this->logArray['DATA_RESPONSE'] = $this->readResponse();
 +
 +        // Send mail message
 +
 +        if (!$this->sendMail()) return false;
 +
 +        // Good bye server! =)
 +
 +        $this->sendCommand('QUIT');
 +
 +        $this->logArray['QUIT_RESPONSE'] = $this->readResponse();
 +
 +        // Close smtp connect 
 +
 +        fclose($this->smtpConnect);
 +
 +        return true;
 +
 +    }
 +
 +    // Function send mail
 +
 +    private function sendMail() {
 +
 +        $this->sendHeaders();
 +
 +        $this->sendCommand($this->message);
 +
 +        $this->sendCommand('.');
 +
 +        $this->logArray['SEND_DATA_RESPONSE'] = $this->readResponse();
 +
 +        if(substr($this->logArray['SEND_DATA_RESPONSE'],0,3)!='250') {
 +
 +            $this->Error .= 'Mistake in sending data! '.$this->logArray['SEND_DATA_RESPONSE'].$this->newline;
 +
 +            return false;
 +
 +        }
 +
 +        return true;
 +
 +    }
 +
 +    // Function read response
 +
 +    private function readResponse() {
 +
 +        $data="";
 +
 +        while($str = fgets($this->smtpConnect,4096))
 +
 +        {
 +
 +            $data .= $str;
 +
 +            if(substr($str,3,1) == " ") { break; }
 +
 +        }
 +
 +        return $data;
 +
 +    }
 +
 +    // function send command to server
 +
 +    private function sendCommand($string) {
 +
 +        fputs($this->smtpConnect,$string.$this->newline);
 +
 +        return ;
 +
 +    }
 +
 +    // function send headers
 +
 +    private function sendHeaders() {
 +
 +        //$this->sendCommand("Date: ".date("D, j M Y G:i:s")." +0100");
 +
 +        $this->sendCommand("From: <$this->from>");
 +
 +        $this->sendCommand("Reply-To: <$this->from>");
 +
 +        $this->sendCommand("To: <$this->to>");
 +
 +        $this->sendCommand("Subject: $this->subject");
 +
 +        $this->sendCommand("MIME-Version: 1.0");
 +
 +        $this->sendCommand("Content-Type: text/html; charset=$this->charset");
 +
 +        if ($this->contentTransferEncoding) $this->sendCommand("Content-Transfer-Encoding: $this->contentTransferEncoding");
 +
 +        $this->sendCommand($this->newline);
 +
 +        return ;
 +
 +    }
 +
 +
 +    public function __destruct() {
 +
 +        if (is_resource($this->smtpConnect)) fclose($this->smtpConnect);
 +
 +    }
 +
 +}
 +
 +?> 
 +</code>
  

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki