Mieux preparer et compter les destinataires valides car une combinaison dest vide + bcc invalide passait a travers les mailles et declenchait une erreur facteur
// On crée l'objet Facteur (PHPMailer) pour le manipuler ensuite
$options = [];
if ($exceptions) {
$options['exceptions'] = $exceptions;
}
$facteur = facteur_factory($options);
// commençons par verifier les destinataires
// plusieurs destinataires peuvent etre fournis separes par des virgules
// c'est un format standard dans l'envoi de mail
// les passer au format array pour phpMailer
// mais ne pas casser si on a deja un array en entree
// si pas destinataire du courriel on renvoie false (eviter les warning PHP : ligne 464 de phpmailer-php5/class.phpmailer.php
// suppression des adresses de courriels invalides, si aucune valide, renvoyer false (eviter un warning PHP : ligne 464 de phpmailer-php5/class.phpmailer.php)
// verifier qu'on a au moins un destinataire, meme si c'est un bcc ou un cc
// suppression des adresses de courriels invalides, si aucune valide, renvoyer une erreur
$to = array_map('trim', $to);
foreach ($to as $key => $value) {
if (!email_valide($value)) {
unset($to[$key]);
}
}
// initialiser les destinataires
$nb_dest_valides = $facteur->setDest($to);
// S'il y a des copies à envoyer
if (!empty($cc)) {
foreach ($cc as $courriel) {
if ($facteur->AddCC(trim($courriel))) {
$nb_dest_valides++;
}
}
}
// S'il y a des copies cachées à envoyer
if (!empty($bcc)) {
foreach ($bcc as $courriel) {
if ($facteur->AddBCC(trim($courriel))) {
$nb_dest_valides++;
}
}
}
if (!$nb_dest_valides) {
return _L("Aucune adresse email de destination valable pour l'envoi du courriel.");
}
return '';
}
/**
* Generer le FacteurXXX selon la config par defaut/passee en options
* @param array $options
@ -330,7 +335,7 @@ function facteur_factory($options = []) {
) {
return new $FacteurClass($options);
} else {
spip_log("Impossible de trouver la medthode $config_mailer ou sa classe " . (empty($methodes[$config_mailer]) ? '' : $methodes[$config_mailer]), 'facteur' . _LOG_ERREUR);
spip_log("Impossible de trouver la methode $config_mailer ou sa classe " . (empty($methodes[$config_mailer]) ? '' : $methodes[$config_mailer]), 'facteur' . _LOG_ERREUR);
// fallback fonction mail()
include_spip('inc/Facteur/FacteurMail');
@ -466,7 +471,7 @@ function facteur_extraire_sujet($message_html, $message_texte = '') {
/**
* Retourne la pile de fonctions utilisée pour envoyer un mail
* Retourne la pile de fonctions utilisée pour envoyer un mail
*
* @note
* Ignore les fonctions `include_once`, `include_spip`, `find_in_path`