Esempio n. 1
0
 /**
  * Une remplaçante de la fonction mail classique de php (ATTENTION, pour les 3 premiers arguments seulement)
  * @param string|array $to        Le ou les destinataire(s) ; adresse seule ou "Nom en UTF-8 <*****@*****.**>" dans un tableau ou une chaine à virgules si plusieurs destinataires
  * @param string       $subject   L'objet du mail (UTF-8)
  * @param string       $message   Le message texte à envoyer (UTF-8)
  * @param string       $replyto   Facultatif, même format que $to 
  * @param string       $from      Facultatif, l'intitulé de l'expéditeur (ou intitulé + adresse) ; adresse surchargée par $default_sender
  * @param array        $args_sup  Les headers supplémentaires, sous la forme array(header_key => header_value)
  * @param array        $options   D'éventuelles options (no_check_recipients peut être mis à true)
  * @return boolean                Le résultat de la fonction mail de php: TRUE si le mail a été accepté pour livraison, FALSE sinon.
  */
 public static function mail($to, $subject, $message, $replyto = '', $from = '', $args_sup = array(), $options = array())
 {
     $mail = new Sesamail();
     // L'option no_check_recipient en 1er
     if (!empty($options['no_check_recipients'])) {
         $mail->no_check_recipients = TRUE;
     }
     // L'ordre d'affectation des headers n'impacte pas celui dans lequel la fonction mail de php les ordonnera au final.
     // Dommage car mettre le sujet en dernier permettrait d'interpréter les autres headers quand windows mail tronque le sujet.
     // To
     if (empty($to)) {
         trigger_error("Aucun destinataire spécifié");
         return FALSE;
     } else {
         if (!$mail->setTo($to)) {
             trigger_error("Fonction mail() appellée avec un destinataire invalide ({$to}), mail non envoyé.");
             return FALSE;
         }
     }
     // Subject
     $subject = $mail->domain_application ? '[' . $mail->domain_application . '] ' . $subject : $subject;
     $mail->setSubject($subject);
     // Message
     $mail->setMessage($message);
     // ReplyTo
     $replyto = !empty($replyto) ? $replyto : (!empty($mail->default_replyto) ? $mail->default_replyto : $to);
     $mail->setReplyTo($replyto);
     // From
     $from = !empty($from) ? $from : $mail->domain_application;
     $mail->setFrom($from);
     // et les args Sup
     foreach ($args_sup as $header_key => $header_value) {
         // on liste pas les headers avec destinataire, on regarde juste chaine avec @ ou pas
         if (is_string($header_value) && strpos($header_value, '@')) {
             // @ en 1er caractère pas géré comme un vrai destinataire
             $mail->setRecipients($header_key, $header_value);
         } elseif (is_array($header_value)) {
             // setRecipients se débrouille
             $mail->setRecipients($header_key, $header_value);
         } else {
             $mail->setHeader($header_key, $header_value);
         }
     }
     // reste à envoyer
     return $mail->send();
 }