WP File Manager
Current Path:
/
home
/
argothem
/
www
/
organecyberpresse
/
plugins
/
auto
/
facteur
/
v5.2.1
/
formulaires
/
Name
Action
..
configurer_facteur.html
Edit
configurer_facteur.php
Edit
inc-config-facteur-mailer-mail.html
Edit
inc-config-facteur-mailer-smtp.html
Edit
tester_facteur.html
Edit
tester_facteur.php
Edit
Editing: tester_facteur.php
<?php /** * Plugin Facteur 4 * (c) 2009-2019 Collectif SPIP * Distribue sous licence GPL * * @package SPIP\Facteur\Formulaires\Tester_facteur */ if (!defined('_ECRIRE_INC_VERSION')) { return; } function formulaires_tester_facteur_charger_dist() { include_spip('inc/config'); $valeurs = [ 'email_test' => $GLOBALS['meta']['email_webmaster'], 'email_test_from' => '', 'email_test_piece_jointe' => 0, 'email_test_important' => 0, ]; if (!empty($GLOBALS['visiteur_session']['email'])) { $valeurs['email_test'] = $GLOBALS['visiteur_session']['email']; } if (defined('_TEST_EMAIL_DEST')) { if (_TEST_EMAIL_DEST) { $valeurs['_message_warning'] = _T('facteur:info_envois_forces_vers_email', ['email' => _TEST_EMAIL_DEST]); } else { $valeurs['_message_warning'] = _T('facteur:info_envois_bloques_constante'); } } if (isset($GLOBALS['_message_html_test'])) { $valeurs['_message_html_test'] = $GLOBALS['_message_html_test']; } return $valeurs; } function formulaires_tester_facteur_verifier_dist() { $erreurs = []; if (!$email = _request('email_test')) { $erreurs['email_test'] = _T('info_obligatoire'); } elseif (!email_valide($email)) { $erreurs['email_test'] = _T('form_email_non_valide'); } if ( $from = _request('email_test_from') and !email_valide($from) ) { $erreurs['email_test_from'] = _T('form_email_non_valide'); } return $erreurs; } function formulaires_tester_facteur_traiter_dist() { // envoyer un message de test ? $res = []; $destinataire = _request('email_test'); $message_html = ''; $options = []; 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; } $err = facteur_envoyer_mail_test($destinataire, _T('facteur:corps_email_de_test'), $message_html, $options); if ($err) { $res['message_erreur'] = nl2br($err); } else { $res['message_ok'] = _T('facteur:email_test_envoye'); $GLOBALS['_message_html_test'] = $message_html; } return $res; } /** * Inliner du contenu base64 pour presenter le html du mail de test envoye * @param string $texte * @param string $type * @return string */ function facteur_inline_base64src($texte, $type = 'text/html') { return "data:$type;charset=" . $GLOBALS['meta']['charset'] . ';base64,' . base64_encode($texte); } /** * Fonction pour tester un envoi de mail ver sun destinataire * renvoie une erreur eventuelle ou rien si tout est OK * @param string $destinataire * @param string $titre * @param string $message_html * @param array $options * @return string * message erreur ou vide si tout est OK */ function facteur_envoyer_mail_test($destinataire, $titre, &$message_html, $options = []) { $piece_jointe = []; 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 // 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 = [ 'chemin' => $file, 'nom' => $doc['titre'] ?: basename($doc['fichier']), 'mime' => $mime, ]; break 2; } } } unset($options['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', ['piece_jointe' => $piece_jointe, 'id_article' => $id_article]); $message_texte = recuperer_fond('emails/test_email_texte', ['piece_jointe' => $piece_jointe, 'id_article' => $id_article]); $corps = [ 'html' => $message_html, 'texte' => $message_texte, 'exceptions' => true, ]; if ($piece_jointe) { $corps['pieces_jointes'] = [$piece_jointe]; } if ($options) { $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 { $retour = $envoyer_mail($destinataire, $titre, $corps); } catch (Exception $e) { return $e->getMessage(); } // si echec mais pas d'exception, on signale de regarder dans les logs if (!$retour) { return _T('facteur:erreur') . ' ' . _T('facteur:erreur_dans_log'); } // tout est OK, pas d'erreur return ''; }