Merge branch 'v1'
[lhc/web/www.git] / www / plugins / facteur / inc / envoyer_mail.php
index ef29058..261c7c1 100644 (file)
@@ -63,7 +63,39 @@ function inc_envoyer_mail($destinataire, $sujet, $corps, $from = "", $headers =
                        $message_html   = $corps;\r
                }\r
                else {\r
-                       $message_texte  = nettoyer_caracteres_mail($corps);\r
+                       // Autodetection : tester si le mail est en HTML\r
+                       if (strpos($headers,"Content-Type:")===false\r
+                               AND strpos($corps,"<")!==false // eviter les tests suivants si possible\r
+                               AND $ttrim = trim($corps)\r
+                               AND substr($ttrim,0,1)=="<"\r
+                         AND substr($ttrim,-1,1)==">"\r
+                         AND stripos($ttrim,"</html>")!==false){\r
+\r
+                               if(!strlen($sujet)){\r
+                                       // dans ce cas on ruse un peu : extraire le sujet du title\r
+                                       if (preg_match(",<title>(.*)</title>,Uims",$corps,$m))\r
+                                               $sujet = $m[1];\r
+                                       else {\r
+                                               // fallback, on prend le body si on le trouve\r
+                                               if (preg_match(",<body[^>]*>(.*)</body>,Uims",$corps,$m))\r
+                                                       $ttrim = $m[1];\r
+\r
+                                               // et on extrait la premiere ligne de vrai texte...\r
+                                               // nettoyer le html et les retours chariots\r
+                                               $ttrim = textebrut($ttrim);\r
+                                               $ttrim = str_replace("\r\n", "\r", $ttrim);\r
+                                               $ttrim = str_replace("\r", "\n", $ttrim);\r
+                                               // decouper\r
+                                               $ttrim = explode("\n",trim($ttrim));\r
+                                               // extraire la premiere ligne de texte brut\r
+                                               $sujet = array_shift($ttrim);\r
+                                       }\r
+                               }\r
+                               $message_html   = $corps;\r
+                       }\r
+                       // c'est vraiment un message texte\r
+                       else\r
+                               $message_texte  = nettoyer_caracteres_mail($corps);\r
                }\r
                $headers = array_map('trim',explode("\n",$headers));\r
        }\r
@@ -74,6 +106,10 @@ function inc_envoyer_mail($destinataire, $sujet, $corps, $from = "", $headers =
        if ($message_texte AND ! $message_html){\r
                $message_html = recuperer_fond("emails/texte",array('texte'=>$message_texte,'sujet'=>$sujet));\r
        }\r
+       // si le mail est en HTML sans alternative, la generer\r
+       if ($message_html AND !$message_texte){\r
+               $message_texte = facteur_mail_html2text($message_html);\r
+       }\r
 \r
        // mode TEST : forcer l'email\r
        if (defined('_TEST_EMAIL_DEST')) {\r