Outils pour utilisateurs

Outils du site


braveo:classemail

Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
braveo:classemail [2011/01/14 13:40]
127.0.0.1 modification externe
braveo:classemail [2016/07/19 15:36] (Version actuelle)
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>​
  
braveo/classemail.txt · Dernière modification: 2016/07/19 15:36 (modification externe)