@ -65,6 +65,9 @@ function formulaires_tester_facteur_traiter_dist() {
if ($from = _request('email_test_from')) {
$options['from'] = $from;
}
if (_request('email_test_piece_jointe')) {
$options['piece_jointe'] = true;
}
if (_request('email_test_important')) {
$options['important'] = true;
}
@ -106,26 +109,43 @@ function facteur_envoyer_mail_test($destinataire, $titre, &$message_html, $optio
$piece_jointe = array();
if (test_plugin_actif('medias')) {
if (test_plugin_actif('medias') and !empty($options['piece_jointe']) ) {
include_spip('inc/documents');
// trouver une piece jointe dans les documents si possible, la plus legere possible, c'est juste pour le principe
$docs = sql_allfetsel('*', 'spip_documents', 'media='.sql_quote('file').' AND distant='.sql_quote('non').' AND brise=0','', 'taille', '0,10');
foreach ($docs as $doc) {
$file = get_spip_doc($doc['fichier']);
if (file_exists($file)) {
$mime = sql_getfetsel('mime_type', 'spip_types_documents', 'extension='.sql_quote($doc['extension']));
$piece_jointe = array(
'chemin' => $file,
'nom' => $doc['titre'] ? $doc['titre'] : basename($doc['fichier']),
'mime' => $mime,
);
break;
// mais de preference un pdf car ça trig moins les antispam qu'un fichier office par exemple
foreach (['pdf', '%'] as $ext) {
$docs = sql_allfetsel('*', 'spip_documents', 'extension LIKE ' . sql_quote($ext) . ' AND media='.sql_quote('file').' AND distant='.sql_quote('non').' AND brise=0','', 'taille', '0,10');
foreach ($docs as $doc) {
$file = get_spip_doc($doc['fichier']);
if (file_exists($file)) {
$mime = sql_getfetsel('mime_type', 'spip_types_documents', 'extension='.sql_quote($doc['extension']));
$piece_jointe = array(
'chemin' => $file,
'nom' => $doc['titre'] ? $doc['titre'] : basename($doc['fichier']),
'mime' => $mime,
);
break 2;
}
}
}
unset($options['piece_jointe']);
}
$message_html = recuperer_fond('emails/test_email_html', array('piece_jointe' => $piece_jointe));
$message_texte = recuperer_fond('emails/test_email_texte', array('piece_jointe' => $piece_jointe));
// trouver un article, de preference dans la langue du site, avec une image jointe
foreach ([$GLOBALS['meta']['langue_site'], '%'] as $lang) {
foreach (['%< img % ' , ' % < emb % ' , ' % < doc % ' , ' % ' ] as $ modele ) {
if ($modele === '%' and $lang !== '%') {
continue;
}
$id_article = sql_getfetsel('id_article', 'spip_articles', "statut='publie' AND lang LIKE ".sql_quote($lang). " AND texte LIKE ".sql_quote($modele), '', 'LENGTH(texte) DESC,id_article', '0,1');
if ($id_article) {
break 2;
}
}
}
$message_html = recuperer_fond('emails/test_email_html', array('piece_jointe' => $piece_jointe, 'id_article' => $id_article));
$message_texte = recuperer_fond('emails/test_email_texte', array('piece_jointe' => $piece_jointe, 'id_article' => $id_article));
$corps = array(
'html' => $message_html,
'texte' => $message_texte,
@ -140,6 +160,9 @@ function facteur_envoyer_mail_test($destinataire, $titre, &$message_html, $optio
$corps = array_merge($options, $corps);
}
// prefixer le titre par la date, c'est utile quand on debug et teste de nombreuses fois...
$titre = "[".date('Y-m-d H:i:s').'] ' . $titre;
// passer par envoyer_mail pour bien passer par les pipeline et avoir tous les logs
$envoyer_mail = charger_fonction('envoyer_mail', 'inc');
try {