true] pour afficher le $corps final sans envoyer le mail * $options['cci' => true] pour passer les destinataires en cci si il y en a plus qu'un * **/ function inc_envoyer_gamumail($slug, $destinataires, $options = []) { include_spip('inc/texte'); include_spip('classes/facteur'); $retour = array(); // sécu if (preg_match('/[^a-zA-Z0-9_\-]/', $slug)) { $retour['message_erreur'] = _T("gamumail:erreur_format_slug"); return $retour; } // contenu $res = sql_fetsel('*', 'spip_gamumails', 'slug = "'.$slug.'"'); if ($res) { $sujet = $res['sujet']; $html = propre($res['texte']); $texte = facteur_mail_html2text($html); $id_docs = $res['id_docs']; } else { $retour['message_erreur'] = _T("gamumail:pas_de_slug"); return $retour; } // destinataires if (!is_array($destinataires)) { $destinataires = explode(',', $destinataires); } $pour = array(); foreach ($destinataires as $dest) { if (is_numeric($dest)) { if ($mail = sql_getfetsel('email', 'spip_auteurs', 'id_auteur='.$dest)) { $pour[] = $mail; } } elseif (email_valide($dest)) { $pour[] = $dest; } } $non_vide = function ($elem) { return ($elem != NULL AND $elem != ''); }; $cc = array_filter(explode(',', lire_config('gamumail/mail_cc')), $non_vide); $cci = array_filter(explode(',', lire_config('gamumail/mail_cci')), $non_vide); // si on a plusieurs destinataires et $options['cci' => true] les passer en cci et mettre le compte expéditeur du site en to if (count($pour) > 1 AND isset($options['cci']) AND $options['cci']) { $cci = array_unique(array_merge($cci, $pour)); $pour = [lire_config('facteur/adresse_envoi_email',lire_config('email_webmaster'))]; } // documents joints $pieces_jointes = []; // filtrage des id_docs attachés au slug (ici on ne veut que des id_docs valides) $Tid_doc = []; $id_docs = array_filter(explode(',', $id_docs), 'is_numeric'); foreach ($id_docs as $doc) { if ($res = sql_getfetsel('id_document', 'spip_documents', 'id_document='.$doc)) { $Tid_doc[] = $doc; } } // récup des paramètres des fichiers à attacher if (!empty($Tid_doc)) { foreach ($Tid_doc as $id_document) { $Tdocument = sql_fetsel('titre,fichier,extension','spip_documents','id_document='.intval($id_document)); $destination = _DIR_IMG.$Tdocument['fichier']; $extension = $Tdocument['extension']; if ($Tdocument['titre']) { $nom_fichier = $Tdocument['titre'] .".".$extension; } else { $nom_fichier = basename($Tdocument['fichier']); } $type_mime = bigup_get_mime_type_extension($extension); $pieces_jointes[] = [ 'chemin' => $destination, 'nom' => $nom_fichier, 'encodage' => 'base64', 'mime' => $type_mime ]; } } /* // les pdfs $Tpdfs_ok = _request('Tpdfs_ok'); if ($f = charger_fonction('traiter_av_pdf', 'gamumail', true)) { $options = $f($options, $auteur, $Tclient, $Tpdf); } if ($f = charger_fonction($slug . '_traiter_av_pdf', 'gamumail', true)) { $options = $f($options, $auteur, $Tclient, $Tpdf); } $Tpdf_dell = []; if (!empty($Tpdfs_ok) and is_array($Tpdfs_ok)) { if (array_key_exists('fichier', $Tpdf)) { $Tpdf = [$Tpdf]; } $recup_pdf = charger_fonction('charger_pdf','inc'); foreach ($Tpdfs_ok as $pdf) { foreach ($Tpdf as $p) { if ($p['fichier'] === $pdf) { $c = $p['contexte']; $nom = $p['nom']; } } $pdf = $recup_pdf($pdf, $c); $nom_fichier = $nom.'.pdf'; $destination = _DIR_TMP.basename($nom_fichier); $Tpdf_dell[] = $destination; file_put_contents($destination,$pdf); $pieces_jointes[] = [ 'chemin' => $destination, 'nom' => $nom_fichier, 'encodage' => 'base64', 'mime' => 'application/pdf' ]; } } */ $html_header = ''; if (find_in_path('gamumail/'.$slug .'_html_header.html')) { $html_header = recuperer_fond('gamumail/'.$slug . '_html_header', $options); } elseif(find_in_path('gamumail/html_header.html')) { $html_header = recuperer_fond('gamumail/html_header', $options); } $html_footer = ''; if (find_in_path('gamumail/'.$slug . '_html_footer.html')) { $html_footer = recuperer_fond('gamumail/'.$slug . '_html_footer', $options); } elseif (find_in_path('gamumail/html_footer.html')) { $html_footer = recuperer_fond('gamumail/html_footer', $options); } $html = $html_header . $html . $html_footer; $corps = [ 'html' => $html, 'texte' => $texte, 'cc' => $cc, 'cci' => $cci, 'pieces_jointes' => $pieces_jointes ]; if ($f = charger_fonction('traiter', 'gamumail', true)) { $corps = $f($corps, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect); } if ($f = charger_fonction($slug . '_traiter', 'gamumail', true)) { $corps = $f($corps, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect); } // si debug on affiche sans envoyer le mail if (isset($options['debug']) AND $options['debug']) { echo '$options :'; var_dump($options); echo '
$pour : '; var_dump($pour); echo '
$sujet: '.$sujet.'
$corps : '; var_dump($corps); die; } $envoyer_mail = charger_fonction('envoyer_mail', 'inc/'); $ok = $envoyer_mail($pour, $sujet, $corps); if (!$ok) { spip_log("Erreur d'envoi du mail : ","gamumail"); spip_log($corps,"gamumail"); $retour['message_erreur'] = _T("gamumail:erreur_envoi_mail"); } else { $retour['message_ok'] = _T('gamumail:mail_envoye'); } /* // on supprime les pdfs temporaires if (count($Tpdf_dell)) { foreach ($Tpdf_dell as $pdf) { unlink($pdf); } } if ($redirect) { $retour['redirect'] = $redirect; } */ return $retour; }