* string encodage : encodage a utiliser, parmi 'base64', '7bit', '8bit', 'binary', 'quoted-printable'\r
* string mime : mime type du document\r
* array headers : tableau d'en-tetes personalises, une entree par ligne d'en-tete\r
+ * bool exceptions : lancer une exception en cas d'erreur (false par defaut)\r
* @param string $from (deprecie, utiliser l'entree from de $corps)\r
* @param string $headers (deprecie, utiliser l'entree headers de $corps)\r
* @return bool\r
function inc_envoyer_mail($destinataire, $sujet, $corps, $from = "", $headers = "") {\r
$message_html = '';\r
$message_texte = '';\r
+ $nom_envoyeur = $cc = $bcc = $repondre_a = '';\r
+ $pieces_jointes = array();\r
\r
// si $corps est un tableau -> fonctionnalites etendues\r
// avec entrees possible : html, texte, pieces_jointes, nom_envoyeur, ...\r
if (is_array($corps)) {\r
- $message_html = $corps['html'];\r
- $message_texte = nettoyer_caracteres_mail($corps['texte']);\r
- $pieces_jointes = $corps['pieces_jointes'];\r
- $nom_envoyeur = $corps['nom_envoyeur'];\r
- $from = (isset($corps['from'])?$corps['from']:$from);\r
- $cc = $corps['cc'];\r
- $bcc = $corps['bcc'];\r
- $repondre_a = $corps['repondre_a'];\r
- $adresse_erreur = $corps['adresse_erreur'];\r
- $headers = (isset($corps['headers'])?$corps['headers']:$headers);\r
+ $message_html = isset($corps['html']) ? $corps['html'] : "";\r
+ $message_texte = isset($corps['texte']) ? nettoyer_caracteres_mail($corps['texte']) : "";\r
+ $pieces_jointes = isset($corps['pieces_jointes']) ? $corps['pieces_jointes'] : array();\r
+ $nom_envoyeur = isset($corps['nom_envoyeur']) ? $corps['nom_envoyeur'] : "";\r
+ $from = isset($corps['from']) ? $corps['from']: $from;\r
+ $cc = isset($corps['cc']) ? $corps['cc'] : "";\r
+ $bcc = isset($corps['bcc']) ? $corps['bcc'] : "";\r
+ $repondre_a = isset($corps['repondre_a']) ? $corps['repondre_a'] : "";\r
+ $adresse_erreur = isset($corps['adresse_erreur']) ? $corps['adresse_erreur'] : "";\r
+ $headers = isset($corps['headers']) ? $corps['headers'] : $headers;\r
if (is_string($headers)){\r
$headers = array_map('trim',explode("\n",$headers));\r
$headers = array_filter($headers);\r
$message_texte = facteur_mail_html2text($message_html);\r
}\r
\r
+ $exceptions = false;\r
+ if (is_array($corps) AND isset($corps['exceptions'])){\r
+ $exceptions = $corps['exceptions'];\r
+ }\r
+ \r
// mode TEST : forcer l'email\r
if (defined('_TEST_EMAIL_DEST')) {\r
- if (!_TEST_EMAIL_DEST)\r
+ if (!_TEST_EMAIL_DEST){\r
+ spip_log($e="Envois bloques par la constante _TEST_EMAIL_DEST", 'mail.' . _LOG_ERREUR);\r
+ if ($exceptions) {\r
+ throw new Exception($e);\r
+ }\r
return false;\r
+ }\r
else\r
$destinataire = _TEST_EMAIL_DEST;\r
}\r
// c'est un format standard dans l'envoi de mail\r
// les passer au format array pour phpMailer\r
// mais ne pas casser si on a deja un array en entree\r
- // si aucun destinataire du courriel on renvoie false (eviter les warning PHP)\r
+ // si pas destinataire du courriel on renvoie false (eviter les warning PHP : ligne 464 de phpmailer-php5/class.phpmailer.php\r
+ // suppression des adresses de courriels invalides, si aucune valide, renvoyer false (eviter un warning PHP : ligne 464 de phpmailer-php5/class.phpmailer.php)\r
if (is_array($destinataire))\r
$destinataire = implode(", ",$destinataire);\r
\r
- if(strlen($destinataire) > 0)\r
+ if(strlen($destinataire) > 0){\r
$destinataire = array_map('trim',explode(",",$destinataire));\r
+ foreach ($destinataire as $key => $value) {\r
+ if(!email_valide($value))\r
+ unset($destinataire[$key]);\r
+ }\r
+ if(count($destinataire) == 0) {\r
+ spip_log($e="Aucune adresse email de destination valable pour l'envoi du courriel.", 'mail.' . _LOG_ERREUR);\r
+ if ($exceptions) {\r
+ throw new Exception($e);\r
+ }\r
+ return false;\r
+ }\r
+ }\r
else {\r
- spip_log("Aucune adresse email de destination valable pour l'envoi du courriel.", 'mail.' . _LOG_ERREUR);\r
+ spip_log($e="Aucune adresse email de destination valable pour l'envoi du courriel.", 'mail.' . _LOG_ERREUR);\r
+ if ($exceptions) {\r
+ throw new Exception($e);\r
+ }\r
return false;\r
}\r
\r
// On crée l'objet Facteur (PHPMailer) pour le manipuler ensuite\r
$facteur = new Facteur($destinataire, $sujet, $message_html, $message_texte);\r
+ if (is_array($corps) AND isset($corps['exceptions'])){\r
+ $facteur->SetExceptions($corps['exceptions']);\r
+ }\r
\r
// On ajoute le courriel de l'envoyeur s'il est fournit par la fonction\r
if (empty($from) AND empty($facteur->From)) {\r
$from = $GLOBALS['meta']["email_envoi"];\r
if (empty($from) OR !email_valide($from)) {\r
spip_log("Meta email_envoi invalide. Le mail sera probablement vu comme spam.", 'mail.' . _LOG_ERREUR);\r
- $from = $destinataire;\r
+ if(is_array($destinataire) && count($destinataire) > 0)\r
+ $from = $destinataire[0];\r
+ else\r
+ $from = $destinataire;\r
}\r
- } \r
+ }\r
\r
// "Marie Toto <Marie@toto.com>"\r
if (preg_match(",^([^<>\"]*)<([^<>\"]+)>$,i",$from,$m)){\r
$head = $facteur->CreateHeader();\r
\r
// Et c'est parti on envoie enfin\r
- spip_log("mail via facteur\n$head"."Destinataire:".print_r($destinataire,true),'mail.' . _LOG_ERREUR);\r
+ spip_log("mail via facteur\n$head"."Destinataire:".print_r($destinataire,true),'mail');\r
spip_log("mail\n$head"."Destinataire:".print_r($destinataire,true),'facteur');\r
$retour = $facteur->Send();\r
\r
- if (!$retour)\r
- spip_log("Erreur Envoi mail via Facteur : ".print_r($facteur->ErrorInfo,true),'facteur');\r
+ if (!$retour){\r
+ spip_log("Erreur Envoi mail via Facteur : ".print_r($facteur->ErrorInfo,true),'mail.'._LOG_ERREUR);\r
+ }\r
\r
return $retour ;\r
}\r
-\r
-?>\r