/** * 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(); }