* string nom_envoyeur : un nom d'envoyeur pour completer l'email from\r
* string cc : destinataires en copie conforme\r
* string bcc : destinataires en copie conforme cachee\r
- * string|array repondre_a : une ou plusieurs adresses à qui répondre\r
+ * string|array repondre_a : une ou plusieurs adresses à qui répondre.\r
+ * On peut aussi donner une liste de tableaux du type :\r
+ * array('email' => 'test@exemple.com', 'nom' => 'Adresse de test')\r
+ * pour spécifier un nom d'envoyeur pour chaque adresse.\r
+ * string nom_repondre_a : le nom d'envoyeur pour compléter l'email repondre_a\r
* string adresse_erreur : addresse de retour en cas d'erreur d'envoi\r
* array pieces_jointes : listes de pieces a embarquer dans l'email, chacune au format array :\r
* string chemin : chemin file system pour trouver le fichier a embarquer\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
+ $nom_repondre_a = isset($corps['nom_repondre_a']) ? $corps['nom_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
if (is_array($corps) AND isset($corps['exceptions'])){\r
$exceptions = $corps['exceptions'];\r
}\r
- \r
+\r
// mode TEST : forcer l'email\r
if (defined('_TEST_EMAIL_DEST')) {\r
if (!_TEST_EMAIL_DEST){\r
}\r
}\r
else {\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
+ if ($bcc) {\r
+ // On peut envoyer de mail que en bcc\r
+ $destinataire = '';\r
+ } else {\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
- return false;\r
}\r
\r
// On crée l'objet Facteur (PHPMailer) pour le manipuler ensuite\r
if (is_array($corps) AND isset($corps['exceptions'])){\r
$facteur->SetExceptions($corps['exceptions']);\r
}\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
else\r
$facteur->AddCC($cc);\r
}\r
- \r
+\r
// S'il y a des copies cachées à envoyer\r
if ($bcc){\r
if (is_array($bcc))\r
else\r
$facteur->AddBCC($bcc);\r
}\r
- \r
+\r
// S'il y a une adresse de reply-to\r
- if ($repondre_a){\r
- if (is_array($repondre_a))\r
- foreach ($repondre_a as $courriel)\r
- $facteur->AddReplyTo($courriel);\r
- else\r
+ if ($repondre_a) {\r
+ if (is_array($repondre_a)) {\r
+ foreach ($repondre_a as $courriel) {\r
+ if (is_array($courriel)) {\r
+ $facteur->AddReplyTo($courriel['email'], $courriel['nom']);\r
+ } else {\r
+ $facteur->AddReplyTo($courriel);\r
+ }\r
+ }\r
+ } elseif ($nom_repondre_a) {\r
+ $facteur->AddReplyTo($repondre_a, $nom_repondre_a);\r
+ } else {\r
$facteur->AddReplyTo($repondre_a);\r
+ }\r
}\r
- \r
+\r
// S'il y a des pièces jointes on les ajoute proprement\r
if (count($pieces_jointes)) {\r
foreach ($pieces_jointes as $piece) {\r
$facteur->AddCustomHeader($h);\r
}\r
}\r
- \r
+\r
// On passe dans un pipeline pour modifier tout le facteur avant l'envoi\r
$facteur = pipeline('facteur_pre_envoi', $facteur);\r
- \r
+\r
// On génère les headers\r
$head = $facteur->CreateHeader();\r
\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
+\r
if (!$retour){\r
spip_log("Erreur Envoi mail via Facteur : ".print_r($facteur->ErrorInfo,true),'mail.'._LOG_ERREUR);\r
}\r