[Résolu] Envoie de mail avec PJ (Créer un compte)

  • WordPress :6.4
  • Statut : résolu
3 sujets de 1 à 3 (sur un total de 3)
  • Auteur
    Messages
  • #2469539
    mathweb33000
    Participant
    Padawan WordPress
    99 contributions

    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);

    #2469558
    mathieu42
    Participant
    Maître WordPress
    2025 contributions

    je 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 ?

     

    #2469584
    mathweb33000
    Participant
    Padawan WordPress
    99 contributions

    Le 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);

3 sujets de 1 à 3 (sur un total de 3)
  • Vous devez être connecté pour répondre à ce sujet.