@ -9,11 +9,10 @@
*/
/**
* @param array|string $destinataire
* si array : un tableau de mails
si string : un mail ou une liste de mails séparés par des virgules
* si string : un mail ou une liste de mails séparés par des virgules
* @param string $sujet
* @param array $message
* string $texte : le corps d'email au format texte
@ -41,8 +40,8 @@
*/
function facteur_envoyer_mail($destinataire, string $sujet, array $message) {
$nom_repondre_a = null;
$message_html = '';
$message_texte = '';
$message_html = '';
$message_texte = '';
$nom_envoyeur = $cc = $bcc = $repondre_a = '';
$pieces_jointes = [];
$important = false;
@ -51,13 +50,13 @@ function facteur_envoyer_mail($destinataire, string $sujet, array $message) {
// avec entrees possible : html, texte, pieces_jointes, nom_envoyeur, ...
// si on fournit un $message['html'] deliberemment vide, c'est qu'on n'en veut pas, et donc on restera au format texte
$message_html = isset($message['html']) ? ($message['html'] ?: ' ') : '';
$message_texte = isset($message['texte']) ? nettoyer_caracteres_mail($message['texte']) : '';
$message_html = isset($message['html']) ? ($message['html'] ?: ' ') : '';
$message_texte = isset($message['texte']) ? nettoyer_caracteres_mail($message['texte']) : '';
$pieces_jointes = $message['pieces_jointes'] ?? [];
$nom_envoyeur = $message['nom_envoyeur'] ?? '';
$nom_envoyeur = $message['nom_envoyeur'] ?? '';
$from = $message['from'];
$cc = $message['cc'] ?? '';
$bcc = $message['bcc'] ?? '';
$cc = $message['cc'] ?? '';
$bcc = $message['bcc'] ?? '';
$repondre_a = $message['repondre_a'] ?? '';
$nom_repondre_a = $message['nom_repondre_a'] ?? '';
$adresse_erreur = $message['adresse_erreur'] ?? '';
@ -76,8 +75,8 @@ function facteur_envoyer_mail($destinataire, string $sujet, array $message) {
// si le mail est en texte brut, on l'encapsule dans un modele surchargeable
// pour garder le texte brut, il suffit de faire un modele qui renvoie uniquement #ENV*{texte}
if ($message_texte and ! $message_html and _EMAIL_AUTO_CONVERT_TEXT_TO_HTML) {
$message_html = recuperer_fond('emails/texte', ['texte' => $message_texte,'sujet' => $sujet]);
if ($message_texte and !$message_html and _EMAIL_AUTO_CONVERT_TEXT_TO_HTML) {
$message_html = recuperer_fond('emails/texte', ['texte' => $message_texte, 'sujet' => $sujet]);
}
$message_html = trim($message_html);
@ -99,8 +98,8 @@ function facteur_envoyer_mail($destinataire, string $sujet, array $message) {
throw new Exception($e);
}
return false;
}
else { $destinataire = _TEST_EMAIL_DEST;
} else {
$destinataire = _TEST_EMAIL_DEST;
}
}
@ -128,8 +127,7 @@ function facteur_envoyer_mail($destinataire, string $sujet, array $message) {
}
return false;
}
}
else {
} else {
if ($bcc) {
// On peut envoyer de mail que en bcc
$destinataire = '';
@ -160,7 +158,8 @@ function facteur_envoyer_mail($destinataire, string $sujet, array $message) {
spip_log('Meta email_envoi invalide. Le mail sera probablement vu comme spam.', 'mail.' . _LOG_ERREUR);
if (is_array($destinataire) & & count($destinataire) > 0) {
$from = $destinataire[0];
} else { $from = $destinataire;
} else {
$from = $destinataire;
}
}
}
@ -193,7 +192,8 @@ function facteur_envoyer_mail($destinataire, string $sujet, array $message) {
foreach ($cc as $courriel) {
$facteur->AddCC($courriel);
}
} else { $facteur->AddCC($cc);
} else {
$facteur->AddCC($cc);
}
}
@ -203,7 +203,8 @@ function facteur_envoyer_mail($destinataire, string $sujet, array $message) {
foreach ($bcc as $courriel) {
$facteur->AddBCC($courriel);
}
} else { $facteur->AddBCC($bcc);
} else {
$facteur->AddBCC($bcc);
}
}
@ -232,10 +233,9 @@ function facteur_envoyer_mail($destinataire, string $sujet, array $message) {
$piece['chemin'],
$piece['nom'] ?? '',
(isset($piece['encodage']) and in_array($piece['encodage'], ['base64', '7bit', '8bit', 'binary', 'quoted-printable'])) ? $piece['encodage'] : 'base64',
$piece['mime'] ?? Facteur::_mime_types(pathinfo($piece['chemin'], PATHINFO_EXTENSION))
$piece['mime'] ?? SPIP\ Facteur\FacteurMail ::_mime_types(pathinfo($piece['chemin'], PATHINFO_EXTENSION))
);
}
else {
} else {
spip_log('Piece jointe manquante ignoree : ' . json_encode($piece, JSON_THROW_ON_ERROR), 'facteur' . _LOG_ERREUR);
}
}
@ -302,11 +302,10 @@ function facteur_envoyer_mail($destinataire, string $sujet, array $message) {
// si le mail est important, c'est le facteur qui aura gere l'envoi de l'alerte fail
}
return $retour ;
return $retour;
}
/**
* Generer le FacteurXXX selon la config par defaut/passee en options
* @param array $options
@ -330,8 +329,7 @@ function facteur_factory($options = []) {
and class_exists($FacteurClass = "SPIP\\Facteur\\{$FacteurClass}")
) {
return new $FacteurClass($options);
}
else {
} else {
spip_log("Impossible de trouver la medthode $config_mailer ou sa classe " . (empty($methodes[$config_mailer]) ? '' : $methodes[$config_mailer]), 'facteur' . _LOG_ERREUR);
// fallback fonction mail()
@ -414,20 +412,18 @@ function facteur_config($options = []) {
* @return array
*/
function facteur_config_envoyeur_par_defaut() {
$config = [
'adresse_envoi_email' => '',
'adresse_envoi_nom' => '',
];
$config['adresse_envoi_email'] = (isset($GLOBALS['meta']['email_envoi']) and $GLOBALS['meta']['email_envoi']) ?
$GLOBALS['meta']['email_envoi']
: $GLOBALS['meta']['email_webmaster'];
if (!function_exists('extraire_multi')) {
include_spip('inc/filtres');
}
$config['adresse_envoi_nom'] = strip_tags(extraire_multi($GLOBALS['meta']['nom_site']));
$config = [
'adresse_envoi_email' => $GLOBALS['meta']['email_webmaster'] ?? '',
'adresse_envoi_nom' => strip_tags(extraire_multi($GLOBALS['meta']['nom_site'])),
];
if (!empty($GLOBALS['meta']['email_envoi'])) {
$config['adresse_envoi_email'] = $GLOBALS['meta']['email_envoi'];
}
return $config;
}
@ -452,8 +448,7 @@ function facteur_extraire_sujet($message_html, $message_texte = '') {
// et on le nettoie/decoupe comme du texte
$message_texte = textebrut($message_html);
}
}
else {
} else {
$message_texte = supprimer_tags($message_texte);
}
@ -498,4 +493,4 @@ function facteur_backtrace($limit = 10) {
}
return $message;
}
}