- WordPress :6.4
- Statut : résolu
- Ce sujet contient 2 réponses, 2 participants et a été mis à jour pour la dernière fois par
mathweb33000, le il y a 1 année et 2 mois.
3 sujets de 1 à 3 (sur un total de 3)
-
AuteurMessages
-
13 mars 2024 à 16 h 13 min #2469539
Bonjour,
Ma configuration WP actuelle
- Version de PHP/MySQL :
- Thème utilisé :
- Extensions en place :
- Nom de l’hébergeur :
- Adresse du site :
Problème(s) rencontré(s) : j’écris un plugin dans lequel je dois envoyer un mail avec une pièce jointe. Le mail s’envoie, la PJ aussi, mais elle arrive sans son extension… Comment corriger ce problème ? Pourtant, l’extension s’affiche bien dans le mail reçu (par exemple :pdf).
$file_path = $_FILES['justificatif']['tmp_name'];
$file_name = $_FILES['justificatif']['name'];
// Extraire l'extension du fichier
$file_extension = pathinfo($file_name, PATHINFO_EXTENSION);
// Vérifier si le fichier a bien été téléchargé
if (file_exists($file_path)) {
// Charger la bibliothèque de pièces jointes
require_once ABSPATH . 'wp-admin/includes/file.php';
WP_Filesystem();
// Ajouter le fichier en tant que pièce jointe
$attachment = array(
'post_mime_type' => mime_content_type($file_path),
'post_title' => $file_name, // Utiliser le nom d'origine du fichier
'post_content' => '',
'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment($attachment, $file_path);
// Inclure le fichier joint dans le mail
if ($attach_id !== 0) {
$attachments = array(get_attached_file($attach_id));
} else {
$attachments = array();
}
// Restaurer les paramètres globaux du site
unset($GLOBALS['wp_filesystem']);
}
$message = 'Type de fichier: ' . $file_mime_type; // Utiliser le type de contenu MIME du fichier
$headers = array('Content-Type: text/html; charset=UTF-8');
// Envoyer le mail avec la pièce jointe
wp_mail($to, $subject, $message, $headers, $attachments);14 mars 2024 à 1 h 33 min #2469558je n’ai pas compris la partie « l’extension s’affiche bien dans le mail reçu ». vous envoyez plusieurs copies de l’e-mail avec un seul appel de wp_mail ?
14 mars 2024 à 15 h 03 min #2469584Le mail contient une phrase contenant l’extension du fichier, mais le fichier ne comportait aucune extension.
Mais j’ai trouvé une solution :
$original_filename = $_FILES['justificatif']['name'];
$file_path = $_FILES['justificatif']['tmp_name'];
$extension = pathinfo($original_filename, PATHINFO_EXTENSION);
// Vérifier si le fichier a bien été téléchargé
if (file_exists($file_path)) {
// Charger la bibliothèque de pièces jointes
require_once ABSPATH . 'wp-admin/includes/file.php';
WP_Filesystem();
// Renommer le fichier avec l'extension d'origine
$renamed_file_path = $file_path . '.' . $extension;
rename($file_path, $renamed_file_path);
// Ajouter le fichier en tant que pièce jointe
$attachment = array(
'post_mime_type' => mime_content_type($renamed_file_path),
'post_title' => basename($renamed_file_path),
'post_content' => '',
'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment($attachment, $renamed_file_path);
// Inclure le fichier joint dans le mail
if ($attach_id !== 0) {
$attachments = array(get_attached_file($attach_id));
} else {
$attachments = array();
}
// Restaurer les paramètres globaux du site
unset($GLOBALS['wp_filesystem']);
}
// Envoyer le mail avec la pièce jointe
wp_mail($to, $subject, $message, $headers, $attachments); -
AuteurMessages
3 sujets de 1 à 3 (sur un total de 3)
- Vous devez être connecté pour répondre à ce sujet.