begin process at 2010 02 10 14:57:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Réseau & Internet

 > 

Sockets

 > 

Fonction mail avec socket et comportement différent sous EasyPHP et Apache sous Debian


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Fonction mail avec socket et comportement différent sous EasyPHP et Apache sous Debian

lundi 12 novembre 2007 à 17:29:38 | Fonction mail avec socket et comportement différent sous EasyPHP et Apache sous Debian

DaCodeManiak

Voilà... depuis le début de la journée, je me prends la tête pour trouver la raison pour laquelle, un script fonctionne à merveille sous XP / EasyPHP et refuse de de fonctionner sous Debian sur le serveur de prod.

En résumé...

Le code suivant :
       // Envoi le PDF par mail au différents contacts
        $mailer = new mail(false,"\n");
        $mailer->setServerConfig(MAIL_SERVER,25);
        $mailer->setMimeType(3); // Multipart avec pièce jointe
        $mailer->set_ehlo_value("toto.fr"); // Message de présentation au serveur SMTP
        $mailer->set_smtp_from_address("info@toto.fr");
       
        // Remplacer par le destinataire définitif
        $mailer->set_rcpt_to_address($_SESSION["web_user"]->mail_address);
       
        $mailer->setsubject("Confirmation de réservation");
       
        $mailer->from("mon_adresse@monserveur.com","Réservation");
       
        // Remplacer par le destinataire du mail tiré du compte client
        $mailer->to($_SESSION["web_user"]->client_nom_raison_sociale,$_SESSION["web_user"]->mail_address);       
       
        // Ajoute le fichier PDF généré
        $mailer->addAttachment($file_manager);
       
        $mailer->setbody("Un texte quelconque");
       
        // Procède à l'envoi proprement dit
        if(!$mailer->send()){
          echo "Erreur d'envoi du mail<br/>\n";
        } // Force l'envoi par la fonction mail

FOnctionne très bien sous XP mais le mail n'est pas du tout envoyé lorsque je bascule en mode prod sous Debian/Apache2

SI je passe en commentaire la méthode addAttachment, le mail part bien... La méthode addAttachement est incluses dans une classe mail dérivée de PHP_Mailer.

SI quelqu'un a une idée ou est tombé sur un problème de ce genre, je suis preneur...

 

Merci
DaCodeMaNIaK

lundi 12 novembre 2007 à 22:32:14 | Re : Fonction mail avec socket et comportement différent sous EasyPHP et Apache sous Debian

malalam

Administrateur CodeS-SourceS
Hello,

difficile de t'aider sans voir la classe que tu utilises, parce que le problème vient d'elle, pas de ce code-ci.
En général, les probèmes de ce genre proviennent des headers...vérifie tes line feeds. Test \r\n et \n\n.
mardi 13 novembre 2007 à 06:48:34 | Re : Fonction mail avec socket et comportement différent sous EasyPHP et Apache sous Debian

DaCodeManiak

Yes... Effectivement, je n'ai pas inclu la classe mail, mais je vais remédier à ça de suite...

Le code est le suivant, et il est vrai que je me demande si le problème ne vient pas des séparateurs même si.... même si un autre script, incluant lui aussi une pièce jointe en csv de taille très réduite fonctionne très bien... Bref... Voilà le code de la classe mail :

<?
/******************************************************************************/
/* Nom                              : mail.class.php                          */
/* Auteur                           : Dièse Include                           */
/* Date                             : Juin 2007                               */
/* Projet                           : Framework Dièse Include                 */
/* Objet                            : classe pour la gestion des mails        */
/******************************************************************************/

class mail {
    /**************************************************************************/
    /* Définition des propriétés                                              */
    /**************************************************************************/
    var $smtp_from_address  = ""; // Adresse à utiliser
    var $rcpt_to_address    = array(); // Destinataire du protocole SMTP
    var $ehlo_value         = ""; // Valeur du ehlo à transmettre
   
    var $from               = ""; // Adresse de l'émetteur du message
    var $fromname           = ""; // Nickname de l'émetteur du message
   
    var $to                 = array(); // Adresses des destinataires du message
      // Tableau contenant les couples to_address | to_name
         
    var $subject      = ""; // Sujet du message
   
    var $body         = ""; // Corps du message (partie texte)
    var $html_body    = ""; // Corps HTML du message multipart
   
    var $defaultMime  = ""; // Type MIME complet pour l'envoi du message
   
    var $returnPath   = "";  // Adresse de retour pour les erreurs
   
    var $reply_to     = "";  // Adresse de réponse pour les messages

    var $headers      = array(); // En-tête additionnelles
   
    var $attachments  = array(); // Stocke les pièces jointes éventuelles
   
    var $separator    = ""; // Séparateur pour les données du message

    var $server       = "127.0.0.1"; // Adresse du serveur de mail
    var $port         = 25; // Port SMTP à utiliser

    var $debug        = false; // Gère le mode debug pour l'affichage de la transaction SMTP
    var $debugLine    = ""; // Ligne de debogage

    var $boundary     = ""; // Délimiteur pour les mails en multipart/alternative

    /**************************************************************************/
    /* Implémentation                                                         */
    /**************************************************************************/
   
    /**************************************************************************/
    /* Constructeur : void mail(bool $debug=false,string $header_sep="\r\n")  */
    /* Paramètres   :                                                         */
    /*    bool $debug=false => permet d'afficher le résultat du processus     */
    /*    string $header_sep="\r\n" => séparateur des commandes SMTP          */
    /* Valeur de retour :                                                     */
    /**************************************************************************/
    function mail($debug=false, $header_sep="\r\n") {
        $this->debug = $debug;
        $this->separator = $header_sep;
       
        return;
    }
   
    /**************************************************************************/
    /* public bool send(bool force_using_internal=false)                      */
    /*  @access public                                                        */
    /*  @type Méthode d'envoi d'un courrier électronique                      */
    /*  @param optional bool $force_using_internal = false                    */
    /*    Permet de forcer l'utilisation de la fonction native mail           */
    /* Valeur de retour :                                                     */
    /*    booléen => valide ou non l'envoi du message                         */
    /* Objet : envoie le mail en fonction des paramètres définis              */
    /*    en utilisant les fonctions socket de PHP                            */
    /* RFC : tous les serveurs n'acceptent pas les fonction sockets           */
    /*    Prévoir un contrôle pour rebasculer sur la fonction mail() de PHP   */
    /**************************************************************************/
    function send($force_using_internal=false){
        /**********************************************************************/
        /* Déclaration des variables locales                                  */
        /**********************************************************************/
        $smtpCnx          = null; // Objet de liaison SMTP
        $use_std_mail     = false; // Vrai si utilisation de la fonction mail() native
       
        $email_message    = ""; // Variables utilisées pour la fonction native mail()
        $email_header     = "";
        $email_to         = "";
        $email_subject    = "";
        /**********************************************************************/
        /* Implémentation                                                     */
        /**********************************************************************/
        $smtpCnx = fsockopen($this->server,$this->port,$errno,$errtext,60);
       
        #stream_set_timeout($smtpCnx,60); // Définit le timeout nécessaire pour l'envoi des messages
       
        if(!$smtpCnx){
            $use_std_mail = true;
        }
       
        // Mise à jour Nov. 2007
        if($force_using_internal)
          $use_std_mail = true;
         
        if(!($use_std_mail)){
          /**********************************************************************/
          /* Initialisation de la transaction SMTP                              */
          /**********************************************************************/
          fputs($smtpCnx,"ehlo " . $this->ehlo_value . $this->separator); // Début de transaction
          $this->debugLine = "<b>helo " . $this->ehlo_value . "</b><br/><i>" . fgets($smtpCnx,1024). "</i><br/>";
         
          fputs($smtpCnx,"mail from: " . $this->smtp_from_address . $this->separator); // Définit l'émetteur
          $this->debugLine .= "<b>mail from :</b> " . $this->smtp_from_address . "<br/><i>" . fgets($smtpCnx,1024) . "</i><br/>";
         
          // Génère la liste des destinataires
          for($i=0;$i<sizeof($this->rcpt_to_address);$i++){
            fputs($smtpCnx,"rcpt to: " . $this->rcpt_to_address[$i] . $this->separator); // Définit le destinataire
            $this->debugLine .= "<b>rcpt to:<b> " . $this->rcpt_to_address[$i] . "<br/><i>" . fgets($smtpCnx,1024) . "</i><br/>";
          }
                 
          /**********************************************************************/
          /* Ajout des données                                                  */
          /**********************************************************************/       
          fputs($smtpCnx,"data" . $this->separator); // Débute les données du message
          $this->debugLine .= "<b>data</b><br/><i>" . fgets($smtpCnx,1024) . "</i>br/>";
 
          fputs($smtpCnx,$this->returnPath); // Définit l'adresse de renvoi des erreurs d'envoi
          $this->debugLine .= $this->returnPath . "<br/>";
 
          fputs($smtpCnx,$this->reply_to); // Définit l'adresse de réponse
          $this->debugLine .= $this->reply_to . "<br/>";
         
          fputs($smtpCnx,$this->defaultMime); // Définit le type du message à envoyer
          $this->debugLine .= $this->defaultMime . "<br/>";
         
          fputs($smtpCnx,"from: " . $this->fromname . " " . $this->from . $this->separator); // En-têtes obligatoires
          $this->debugLine .= "<b>from:</b> " . $this->fromname . " " . $this->from . "<br/>";
         
          // Les detinataires peuvent être plusieurs
          if(sizeof($this->to) > 0){
            for($i=0;$i<sizeof($this->to);$i++){
              if($this->to[$i]["to_name"] != "")
                $email_to .= $this->to[$i]["to_name"] . " ";
              else
                $email_to .= $this->to[$i]["to_address"];
             
              $email_to .= "<" . $this->to[$i]["to_address"] . ">,"; 
            }
          } else {
            // Génère la liste des destinataires
            for($i=0;$i<sizeof($this->rcpt_to_address);$i++){
              $email_to .= $this->rcpt_to_address[$i] . " <" . $this->rcpt_to_address[$i] . ">,";
            }           
          }
          // Supprime la dernière virgule inutile
          $email_to = substr($email_to,0,strlen($email_to)-1);
          // Envoie l'information au socket courant
          fputs($smtpCnx,"to: " . $email_to . $this->separator); // en-tête obligatoires
          $this->debugLine .= "<b>to:</b>&nbsp;<code> " . $email_to . "</code><br/>\n";
         
          fputs($smtpCnx,"subject: " . $this->subject . $this->separator);
          $this->debugLine .= "<b>subject:</b> " . $this->subject . "<br/>";
         
          // En-têtes supplémentaires
          for($i=0;$i<sizeof($this->headers);$i++){
              fputs($smtpCnx,$this->headers[$i] . $this->separator);
              $this->debugLine .= $this->headers[$i] . "<br/>";
          }
 
          // Contenu du message : sujet et contenu
          if(strstr($this->defaultMime,"multipart")){
            fputs($smtpCnx,$this->getBoundary()); // Ajout le délimiteur
            fputs($smtpCnx,$this->getMimePart().$this->separator); // Type du message
          }
          fputs($smtpCnx,$this->body . $this->separator);
          $this->debugLine .= "<blockquote><table border=\"1\"><tr><td>Contenu texte du message : " . $this->body . "</td></tr></table></blockquote><br/>";
         
          if($this->html_body != ""){
            if(strstr($this->defaultMime,"alternative")){
              fputs($smtpCnx,$this->getBoundary()); // Ajout le délimiteur
              fputs($smtpCnx,$this->getMimePart(1).$this->separator); // text/html 
              fputs($smtpCnx,$this->html_body . $this->separator);
              $this->debugLine .= "<blockquote><table border=\"1\"><tr><td>Contenu html du message : " . $this->html_body . "</td></tr></table></blockquote><br/>";         
            }       
          }
         
          // Ajoute les éventuelles pièces jointes
          for($i=0;$i<sizeof($this->attachments);$i++){
              fputs($smtpCnx,$this->attachments[$i] . $this->separator);
              $this->debugLine .= "Ajout des pièces jointes<br/>";
          }
                 
          // Termine le message
          fputs($smtpCnx,"." . $this->separator);
 
          // Quitte la session SMTP
          fputs($smtpCnx,"QUIT" . $this->separator);
          $this->debugLine .= "<b>QUIT</b><br/><i>" . fgets($smtpCnx,1024) . "</i>br/>";
 
          // Ferme le flux ouvert
          fclose($smtpCnx);
 
          if($this->debug)
              $this->debugtoHTML();
 
          return true;
        } else { // Utilisation de la fonction mail() native de PHP
          $email_message = $this->returnPath . $this->separator;
          $email_message .= $this->reply_to . $this->separator;
          $email_message .= $this->defaultMime . $this->separator;
          $email_message .= "from: " . $this->fromname . " " . $this->from . $this->separator;

          // Génère les en-têtes du message
          for($i=0;$i<sizeof($this->headers);$i++){
            $email_header .= $this->headers[$i];
          }
          // Contenu du message : sujet et contenu
          if(strstr($this->defaultMime,"multipart")){
            $email_message .= $this->getBoundary();
            $email_message .= $this->getMimePart().$this->separator;
          }
          $email_message .= $this->body . $this->separator;
          if($this->html_body != ""){
            if(strstr($this->defaultMime,"alternative")){
              $email_message .= $this->getBoundary();
              $email_message .= $this->getMimePart(1) . $this->separator;       
              $email_message .= $this->html_body . $this->separator;
            }       
          }
          // Ajoute les éventuelles pièces jointes
          for($i=0;$i<sizeof($this->attachments);$i++){
              $email_message .= $this->attachments[$i] . $this->separator;
          }
          // Envoie du mail en mode PHP natif
          $email_to = $this->toname . " " . $this->to;
          $email_subject = $this->subject;
          return mail($email_to,$email_subject,$email_message,$email_header);        
        }
       
    }
   
    /**************************************************************************/
    /* public void set_smtp_from_address(string smtp_from_name)               */
    /*  @access public                                                        */
    /*  @type setter                                                          */
    /*  @param string $smtp_from_name                                         */
    /*  @return void                                                          */
    /*  @abstract Définit l'attribut $this->smtp_from_address                 */
    /**************************************************************************/
    function set_smtp_from_address($smtp_from_address){
      /************************************************************************/
      /* Déclaration des variables locales                                    */
      /************************************************************************/
     
      /************************************************************************/
      /* Implémentation                                                       */
      /************************************************************************/
      $this->smtp_from_address = $smtp_from_address;
     
      return;
    }
   
    /**************************************************************************/
    /* public void set_smtp_rcpt_to_address(mixed rcpt_to_address)            */
    /*  @access public                                                        */
    /*  @type setter                                                          */
    /*  @param mixed $rcpt_to_address                                         */
    /*  @return void                                                          */
    /*  @abstract Définit l'attribut $this->rcpt_to_address                   */
    /**************************************************************************/
    function set_rcpt_to_address($rcpt_to_address){
      /************************************************************************/
      /* Déclaration des variables locales                                    */
      /************************************************************************/
     
      /************************************************************************/
      /* Implémentation                                                       */
      /************************************************************************/
      if(!is_array($rcpt_to_address))
        $this->rcpt_to_address[] = $rcpt_to_address; // Ajout un destinataire à la liste
      else
        $this->rcpt_to_address = $rcpt_to_address;
     
      return;
    }
   
    /**************************************************************************/
    /* public void set_ehlo_value(string ehlo_value)                          */
    /*  @access public                                                        */
    /*  @type setter                                                          */
    /*  @param string $ehlo_value => valeur de courtoisie serveur             */
    /*  @return void                                                          */
    /*  @abstract Définit l'attribut $this->ehlo_value                        */
    /**************************************************************************/
    function set_ehlo_value($ehlo_value){
      /************************************************************************/
      /* Déclaration des variables locales                                    */
      /************************************************************************/
     
      /************************************************************************/
      /* Implémentation                                                       */
      /************************************************************************/
      $this->ehlo_value = $ehlo_value;
     
      return;
    }
   
    /**************************************************************************/
    /* Méthode    : void to(string $to,string $to_name="")                    */
    /* Paramètres :                                                           */
    /*    string $to => adresse e-mail du destinataire                        */
    /*    string $to_name => nom en clair du destinataire (optionnel)         */
    /* Valeur de retour :                                                     */
    /* Objet : Ajoute un destinataire à la liste des destinataires            */
    /**************************************************************************/
    function to($to,$toname=""){
      /************************************************************************/
      /* Définition des variables locales                                     */
      /************************************************************************/
      $temp_array         = array(); // Tableau temporaire pour la définition
     
      /************************************************************************/
      /* Implémentation                                                       */
      /************************************************************************/
      $temp_array["to_address"] = $to;
     
      if(strlen($toname))
         $temp_array["to_name"] = $toname;
      else
        $temp_array["to_name"] = "";
       
      $this->to[] = $temp_array;
    
      return;
    }

    /**************************************************************************/
    /* Méthode    : void from(string $from,string $from_name="")              */
    /* Paramètres :                                                           */
    /*    string $from => adresse e-mail de l'émetteur                        */
    /*    string $from_name => nom en clair de l'émetteur (optionnel)         */
    /* Valeur de retour :                                                     */
    /* Objet : Défini l'émetteur du message                                   */
    /**************************************************************************/
    function from($from,$fromname=""){
        if(strlen($fromname))
            $this->fromname = "\"$fromname\""; // Nom en clair affiché
       
        $this->from = "<$from>"; // Adresse de l'émetteur
       
        if($this->debug){
          echo "Emétteur : " . $this->from . " ($from)<br/>";
        }
       
        return;
    }

    /**************************************************************************/
    /* Méthode    : void setsubject(string $subject)                          */
    /* Paramètres :                                                           */
    /*    string $subject => sujet du message                                 */
    /* Valeur de retour :                                                     */
    /* Objet : Définit le sujet du message                                    */
    /**************************************************************************/
    function setsubject($subject){
        $this->subject = $subject;
       
        return;
    }

    /**************************************************************************/
    /* Méthode    : void setbody(string $body)                                */
    /* Paramètres :                                                           */
    /*    string $body => Corps du message                                    */
    /* Valeur de retour :                                                     */
    /* Objet : Définit le corps du message                                    */
    /**************************************************************************/
    function setbody($body){
        $this->body = $body;
       
        return;
    }
   
    /**************************************************************************/
    /* Méthode    : void sethtmlbody(string $body)                            */
    /* Paramètres :                                                           */
    /*    string $body => Corps du message                                    */
    /* Valeur de retour :                                                     */
    /* Objet : Définit le corps du message                                    */
    /**************************************************************************/
    function sethtmlbody($body){
        $this->html_body = $body;
       
        return;
    }

    /**************************************************************************/
    /* Méthode    : void replyto(string $replyto)                             */
    /* Paramètres :                                                           */
    /*    string $replyto => adresse de réponse                               */
    /* Valeur de retour :                                                     */
    /* Objet : Définit l'adresse de réponse aux messages envoyés              */
    /**************************************************************************/
    function replyto($replyto){
        $this->reply_to = "Reply-To: <" . $replyto . ">" . $this->separator;
       
        return;
    }

    /**************************************************************************/
    /* Méthode    : void addCc(string $cc)                                    */
    /* Paramètres :                                                           */
    /*    string $cc => adresse mail en copie conforme                        */
    /* Valeur de retour :                                                     */
    /* Objet : Ajoute une adresse de copie conforme                           */
    /**************************************************************************/
    function addCc($cc){
        array_push($this->headers, "Cc: <" . $cc . ">");
       
        return;
    }

    /**************************************************************************/
    /* Méthode    : void addBcc(string $bcc)                                  */
    /* Paramètres :                                                           */
    /*    string $bcc => adresse mail en copie invisible                      */
    /* Valeur de retour :                                                     */
    /* Objet : Ajoute une adresse de copie invisible                          */
    /**************************************************************************/
    function addBcc($bcc){
        array_push($this->headers, "Bcc: <" . $bcc . ">");
       
        return;
    }

    /**************************************************************************/
    /* Méthode    : void setPriority(int $priority)                           */
    /* Paramètres :                                                           */
    /*    int $priority => définit le niveau de priorité du message           */
    /* Valeur de retour :                                                     */
    /* Objet : Ajout le niveau de priorités aux en-têtes du message           */
    /**************************************************************************/
    function setPriority($priority){
        array_push($this->headers,"X-Priority: " . $priority);
       
        return;
    }

    /**************************************************************************/
    /* Méthode    : void seterrorMailPath(string $errorMailAdd)               */
    /* Paramètres :                                                           */
    /*    string $errorMailAdd => adresse e-mail de destination des erreurs   */
    /* Valeur de retour :                                                     */
    /* Objet : Définit l'adresse de retour des messages en erreur             */
    /**************************************************************************/
    function seterrorMailPath($errorMailAdd){
        $this->returnPath = "Return-Path: <" . $errorMailAdd . ">" . $this->separator;
       
        return;
    }

    /**************************************************************************/
    /* Méthode    : void setMimeType(int $type)                               */
    /* Paramètres :                                                           */
    /*    int $type => définit le type MIME du message à envoyer              */
    /*      0 => Texte plein                                                  */
    /*      1 : Texte/HTML                                                    */
    /*      2 : Multipart                                                     */
    /* Valeur de retour :                                                     */
    /* Objet : Définit le type MIME du message à envoyer                      */
    /**************************************************************************/
    function setMimeType($type=0){
        $this->defaultMime = "MIME-Version: 1.0" . $this->separator . "Content-Type: ";
        switch($type) {
            case 0 : // Texte plein
                $this->defaultMime .= "text/plain; charset=\"iso-8859-1\"";
            break;
            case 1 : // Texte HTML
                $this->defaultMime .= "text/html; charset=\"iso-8859-1\"";
            break;
            case 2 : // Contenu multipart/alternative
                $this->defaultMime .= "multipart/alternative;" . $this->separator;
                $this->boundary = $this->makeBoundary(); // Récupère le délimiteur
                $this->defaultMime .= "\t" . "boundary=\"" . $this->boundary . "\"";
            break;
            case 3 : // Multipart avec pièces jointes
                $this->defaultMime .= "multipart/mixed;" . $this->separator;
                $this->boundary = $this->makeBoundary(); // Récupère le délimiteur
                $this->defaultMime .= "\t" . "boundary=\"" . $this->boundary . "\"";
            break;
        }


        $this->defaultMime .= $this->separator;

        return;
    }

    /**************************************************************************/
    /* Méthode    : void setServerConfig(string $server="localhost",          */
    /*    int $port=25)                                                       */
    /* Paramètres :                                                           */
    /*    string $server="localhost" => définit l'adresse du serveur SMTP     */
    /*    int $port => port SMTP utilisé                                      */
    /* Valeur de retour :                                                     */
    /* Objet : Définit les paramètres du serveur SMTP                         */
    /**************************************************************************/
    function setServerConfig($server="localhost",$port=25){
         $this->server = $server;
         $this->port = $port;
        
         return;
    }
   
    /**************************************************************************/
    /* Méthode : bool addAttachment(object $a_file, string $file_type="")     */
    /* Paramètres :                                                           */
    /*    object $a_file => Objet de type filemanager.class.php               */
    /*    string $file_type="" => type MIME du fichier à joindre              */
    /* Valeur de retour :                                                     */
    /* Objet : ajoute une pièce jointe au message                             */
    /**************************************************************************/
    function addAttachment($a_file){
      /************************************************************************/
      /* Définition des variables locales                                     */
      /************************************************************************/
      $mime_type          = ""; // Type du fichier à joindre
      $return_header      = ""; // Chaîne à ajouter en en-tête du message
      $file_handle        = null; // Handle sur le fichier à lire
      $file_content       = null; // Contenu du fichier
      $content_disposition= ""; // Type de disposition de la pièce jointe
     
      /************************************************************************/
      /* Implémentation                                                       */
      /************************************************************************/
     
      // Teste si le fichier existe
      if($a_file->exists()){
        // Identifie le type de fichier à joindre au message
        $mime_type = $a_file->get_file_info("src","file_mime_type");
        // En fonction du type, détermine la disposition
        if(strstr($mime_type,"image")){
          $content_disposition = "inline";
        } else {
          $content_disposition = "attachment";
        }

        // Récupération du contenu du fichier
        if($file_handle = fopen($a_file->get_file_info("src","file_complete_name"),"rb")){
          while(!feof($file_handle)){
            $file_content .= fread($file_handle,4096);
          }
          fclose($file_handle); // Ferme le fichier source
         
          // Encodage du fichier récupéré
          $file_content = chunk_split(base64_encode($file_content));
          // Construit la chaîne d'attachement
          $return_header = $this->getBoundary();
          $return_header .= "Content-Type:$mime_type;";
          $return_header .= " name=" . $a_file->get_file_info("src","file_name") . $this->separator;
          $return_header .= "Content-Transfer-Encoding:base64" . $this->separator;
          $return_header .= "Content-Disposition: $content_disposition; filename=\"" . $a_file->get_file_info("src","file_name") . "\"" . $this->separator . $this->separator;
          $return_header .= $file_content . $this->separator; // Contenu de la pière jointe
          $return_header .= $this->getBoundary();
         
          // Ajoute l'en-tête au tableau des en-têtes
          array_push($this->attachments,$return_header);
         
        } else {
          return false; // Impossible d'ouvrir le fichier à joindre
        }
      } else {
        return false; // Le fichier n'existe pas
      }
      return true;
    }
     
    /**************************************************************************/
    /* Définition des méthodes privées                                        */
    /**************************************************************************/
   
    /**************************************************************************/
    /* Méthode    : private string makeBoundary(void)                         */
    /* Paramètres :                                                           */
    /* Valeur de retour :                                                     */
    /*      string boundary => chaîne unique de délimitation des parties      */
    /*        d'un message multi-part                                         */
    /* Objet : Définit le délimiteur des parties d'un message                 */
    /**************************************************************************/
   function makeBoundary()
   {
       // fonction qui renvoie un numéro unique servant à délimiter les parties du message
       srand((double)microtime()*10000);
      
       return md5(uniqid(rand()));
   }

    /**************************************************************************/
    /* Méthode    : private string getBoundary(void)                          */
    /* Paramètres :                                                           */
    /* Valeur de retour :                                                     */
    /*      string boundary => chaîne unique de délimitation des parties      */
    /*        d'un message multi-part                                         */
    /* Objet : Retourne le délimiteur des parties d'un message                */
    /**************************************************************************/
   function getBoundary(){
       return "--" . $this->boundary . $this->separator;
   }

    /**************************************************************************/
    /* Méthode    : private string getMultipartHeader(void)                   */
    /* Paramètres :                                                           */
    /* Valeur de retour :                                                     */
    /*      string header => contenu spécifique du message multi-part         */
    /* Objet : Retourne le délimiteur des parties d'un message                */
    /**************************************************************************/
   function getMultipartHeader(){
       return "This is a multi-part message in MIME format." . $this->separator;
   }

    /**************************************************************************/
    /* Méthode    : private string getMimePart(int $type=0)                   */
    /* Paramètres :                                                           */
    /*    int $type=0 => retourne le type de message courant                  */
    /* Valeur de retour :                                                     */
    /*      string mimePart => chaîne unique de délimitation des parties      */
    /*        d'un message multi-part                                         */
    /* Objet : Retourne le type MIME du message courant                       */
    /**************************************************************************/
   function getMimePart($type=0){
       if($type == 0)
           return "Content-Type: text/plain; charset=\"iso-8859-1\"" . $this->separator;
       else
           return "Content-Type: text/html; charset=\"iso-8859-1\"" . $this->separator;
   }
  
    /**************************************************************************/
    /* Méthode    : void debugtoHTML(void)                                    */
    /* Paramètres :                                                           */
    /* Valeur de retour :                                                     */
    /* Objet : Renvoie les informations de debug sur la sortie HTML           */
    /**************************************************************************/
    function debugtoHTML(){
        echo "<div align=\"center\" style=\"border:1px dashed #000000\">\n";
        echo "<blockquote>\n<pre>\n";
        echo "<h2>Transaction SMTP</h2>\n";
        echo $this->debugLine;
        echo "</pre>\n</blockquote>\n</div>\n";

        return;
    }

} // Fin de la classe
?>


DaCodeMaNIaK



Cette discussion est classée dans : mail, address, envoi, mailer, debian


Répondre à ce message

Sujets en rapport avec ce message

Envoi mail special [ par must ] partir d'une base de données si on supprime un message indesirable,comment prevenir celui qui a saisi message.Il a mis son adresse mailMais comment en Envoi Mail [ par benett ] Comment faire pour envoyer un mail avec le contenu d'un formulaire contenant 2 champs ? En fait, je voudrais que le mail s'envoi après avoir cliqué su Envoi Mail [ par benett ] Comment faire pour envoyer un mail avec le contenu d'un formulaire contenant 2 champs ? En fait, je voudrais que le mail s'envoi après avoir cliqué su Récupérer données formulaire + envoi par e-mail [ par kronprinz ] Quelqu'un peut-il m'aider ?Je cherche comment récupérer des données dans un formulaire et me les envoyer par e-mail avec PHP. Pouvez-vous m'expliquer Formulaire d'envoi de mail en HTML [ par slhuilli ] Bonjour,Je suis a la recherche d'un script (PHP si possible) pour pouvoir écrire des mails au format HTML (gestion des gras, souligné et italique ains envoi mail automatique [ par dargaud ] Bonjour,je suis tout nouveau en php et j'aimerai avoir un renseignement :est-il possible d'envoyer un mail automatiquement à une certaine heure tous l Pb envoi de mail en PHP [ par syl2 ] Bonjour à tous,j'essaye de réaliser un petit script pour envoyer un mail à partir d'une page php. Voici le source de mon fichier php$destinataire = "x Probleme formulaire [ par SpiritAnghell ] Voila j'ai écrit un formulaire en php avec envoi de mail. Seulemen il considère que les variables sont vides. pourquoi cela? Voila le code: newsletter php : probleme envoi mail hml [ par allowen ] bonjour, j'ai fait une newsletter en php mais lorsque j'envoie un mail seul une personne reçoit le contenu, les autres recevant seulement le lien de Envoi de mail HTML [ par cyaya ] j'ai ecrit ce code pour envoyer des mail avec un textArea en format text, je voudrais savoir s'il y une option à rajouter pour pouvoir envoyer le mail


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales