On peut ajouter une tableau de pieces_jointes :

$options['pieces_jointes'][] = [
    'chemin'   => 'tmp/cache/toto.xls',
    'nom'      => 'toto.xls',
    'encodage' => 'base64',
    'mime'     => 'application/vnd.ms-excel'
]
This commit is contained in:
Christophe 2021-05-25 09:23:53 +02:00
parent 01655c03e0
commit c72d52867f
2 changed files with 31 additions and 16 deletions

View file

@ -3,24 +3,31 @@ if (!defined('_ECRIRE_INC_VERSION')){
return; return;
} }
/** /*
* fonction pour préparer et envoyer un mail basé sur un slug gamumail * fonction pour préparer et envoyer un mail basé sur un slug gamumail
* *
* @param string $slug * @param string $slug
* @param string|array $destinataires = adresses mails et id_auteur séparées par , ou en array * @param string|array $destinataires = adresses mails et id_auteur séparées par , ou en array
* si un des destinataire est au format numérique, on considère que c'est un id_auteur et on va choper son mail dans spip_auteurs * si un des destinataire est au format numérique, on considère que c'est un id_auteur et on va choper son mail dans spip_auteurs
* @param array $options : * @param array $options :
* $options['debug' => true] pour afficher le $corps final sans envoyer le mail * $options['debug' => 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 * $options['cci' => true] pour passer les destinataires en cci si il y en a plus qu'un
* $options['pdfs' => [...]] array des fichiers PDF générés à attacher dont les éléments peuvent être : * $options['pdfs' => [...]] array des fichiers PDF générés à attacher dont les éléments peuvent être :
* - soit un nom de squelette PDF * - soit un nom de squelette PDF
* - soit un array avec 3 éléments (seul le 1er est obligatoire): * - soit un array avec 3 éléments (seul le 1er est obligatoire):
* [ 'fichier' => 'squelette_PDF', * [ 'fichier' => 'squelette_PDF',
* 'contexte' => ['parametre_url_1' => 'valeur_1', 'parametre_url_2' => 'valeur_2', ...] * 'contexte' => ['parametre_url_1' => 'valeur_1', 'parametre_url_2' => 'valeur_2', ...]
* 'nom' => 'nom_fichier_attache' ] * 'nom' => 'nom_fichier_attache' ]
* $options['args' => ['param_1' => 'valeur_1, 'param_2' => 'valeur_2', ...]] * $options['pieces_jointes'][] = [
* * 'chemin' => 'tmp/cache/toto.xls',
**/ * 'nom' => 'toto.xls',
* 'encodage' => 'base64',
* 'mime' => 'application/vnd.ms-excel'
* ]
* ]
* $options['args' => ['param_1' => 'valeur_1, 'param_2' => 'valeur_2', ...]]
*
*/
function inc_envoyer_gamumail($slug, $destinataires, $options = []) { function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
include_spip('inc/texte'); include_spip('inc/texte');
include_spip('classes/facteur'); include_spip('classes/facteur');
@ -32,7 +39,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
$retour['message_erreur'] = _T("gamumail:erreur_format_slug"); $retour['message_erreur'] = _T("gamumail:erreur_format_slug");
return $retour; return $retour;
} }
// contenus du slug // contenus du slug
$res = sql_fetsel('*', 'spip_gamumails', 'slug = "'.$slug.'"'); $res = sql_fetsel('*', 'spip_gamumails', 'slug = "'.$slug.'"');
if ($res) { if ($res) {
@ -92,7 +99,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
$extension = $Tdocument['extension']; $extension = $Tdocument['extension'];
if ($Tdocument['titre']) { if ($Tdocument['titre']) {
$nom_fichier = $Tdocument['titre'] .".".$extension; $nom_fichier = $Tdocument['titre'] .".".$extension;
} }
else { else {
$nom_fichier = basename($Tdocument['fichier']); $nom_fichier = basename($Tdocument['fichier']);
} }
@ -105,6 +112,14 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
]; ];
} }
} }
// les docs attachés
if (isset($options['pieces_jointes'])) {
if (is_array($options['pieces_jointes'])) {
foreach ($options['pieces_jointes'] as $Tpj) {
$pieces_jointes[] = $Tpj;
}
}
}
// les pdfs // les pdfs
$Tpdf_dell = []; $Tpdf_dell = [];
@ -116,7 +131,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
$Tpdfs = array_filter($Tpdfs, function($p) { $Tpdfs = array_filter($Tpdfs, function($p) {
return $p != ''; return $p != '';
}); });
// approximation pour passage dans les fonctions traiter_av_pdf() : // approximation pour passage dans les fonctions traiter_av_pdf() :
// si plusieurs destinataires dans $pour[], on utilise le premier comme 2ème arg ($auteur) // si plusieurs destinataires dans $pour[], on utilise le premier comme 2ème arg ($auteur)
if ($f = charger_fonction('traiter_av_pdf', 'gamumail', true)) { if ($f = charger_fonction('traiter_av_pdf', 'gamumail', true)) {
$options = $f($options, $pour[0], [], $Tpdfs); $options = $f($options, $pour[0], [], $Tpdfs);
@ -158,7 +173,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
$html_header = ''; $html_header = '';
if (find_in_path('gamumail/'.$slug .'_html_header.html')) { if (find_in_path('gamumail/'.$slug .'_html_header.html')) {
$html_header = recuperer_fond('gamumail/'.$slug . '_html_header', $options); $html_header = recuperer_fond('gamumail/'.$slug . '_html_header', $options);
} }
elseif(find_in_path('gamumail/html_header.html')) { elseif(find_in_path('gamumail/html_header.html')) {
$html_header = recuperer_fond('gamumail/html_header', $options); $html_header = recuperer_fond('gamumail/html_header', $options);
} }
@ -168,7 +183,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
} }
elseif (find_in_path('gamumail/html_footer.html')) { elseif (find_in_path('gamumail/html_footer.html')) {
$html_footer = recuperer_fond('gamumail/html_footer', $options); $html_footer = recuperer_fond('gamumail/html_footer', $options);
} }
$html = $html_header . $html . $html_footer; $html = $html_header . $html . $html_footer;
// pipeline pour les remplacements du contenu des slugs spécifiques de chaque plugins // pipeline pour les remplacements du contenu des slugs spécifiques de chaque plugins
@ -179,7 +194,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
'args' => $args, 'args' => $args,
'data' => $html 'data' => $html
)); ));
// traitement des remplacements génériques fournis par Gamumail // traitement des remplacements génériques fournis par Gamumail
$remplacement_generiques = charger_fonction('gamumail_remplacements', 'inc'); $remplacement_generiques = charger_fonction('gamumail_remplacements', 'inc');
$html = $remplacement_generiques($args, $html); $html = $remplacement_generiques($args, $html);
@ -197,7 +212,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
if ($f = charger_fonction('traiter', 'gamumail', true)) { if ($f = charger_fonction('traiter', 'gamumail', true)) {
$corps = $f($corps, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect); $corps = $f($corps, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect);
} }
*/ */
// appel d'une éventuelle fonction de traitement du contenu spécifique du slug // appel d'une éventuelle fonction de traitement du contenu spécifique du slug
if ($f = charger_fonction($slug . '_traiter', 'gamumail', true)) { if ($f = charger_fonction($slug . '_traiter', 'gamumail', true)) {
$corps = $f($corps, $options, $slug, $pour); $corps = $f($corps, $options, $slug, $pour);
@ -225,7 +240,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
spip_log("Erreur d'envoi du mail : ","gamumail"); spip_log("Erreur d'envoi du mail : ","gamumail");
spip_log($corps,"gamumail"); spip_log($corps,"gamumail");
$retour['message_erreur'] = _T("gamumail:erreur_envoi_mail"); $retour['message_erreur'] = _T("gamumail:erreur_envoi_mail");
} }
else { else {
$retour['message_ok'] = _T('gamumail:mail_envoye'); $retour['message_ok'] = _T('gamumail:mail_envoye');
} }

View file

@ -1,7 +1,7 @@
<paquet <paquet
prefix="gamumail" prefix="gamumail"
categorie="communication" categorie="communication"
version="1.0.17" version="1.0.18"
etat="dev" etat="dev"
compatibilite="[3.2.0;4.0.*]" compatibilite="[3.2.0;4.0.*]"
logo="prive/themes/spip/images/gamumail-64.png" logo="prive/themes/spip/images/gamumail-64.png"