Maison >développement back-end >tutoriel php >Comment déterminer le type de contenu des pièces jointes aux e-mails en PHP ?

Comment déterminer le type de contenu des pièces jointes aux e-mails en PHP ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-21 11:08:10770parcourir

How to Determine the Content-Type of Email Attachments in PHP?

Détermination du type de contenu de fichier pour les pièces jointes d'e-mail en PHP

En PHP, l'envoi d'un e-mail avec des pièces jointes nécessite de spécifier le type de contenu de le fichier. Ces informations permettent au client de messagerie d'interpréter et d'afficher correctement la pièce jointe. Cet article explique comment définir correctement la variable $the_content_type à cet effet.

Solution :

Une approche consiste à utiliser la fonction getFileMimeType(), qui utilise une série de solutions de secours pour gérer différentes versions de PHP et les fonctions de type MIME peu fiables :

function getFileMimeType($file) {
    // Try finfo_file
    if (function_exists('finfo_file')) {
        $finfo = finfo_open(FILEINFO_MIME_TYPE);
        $type = finfo_file($finfo, $file);
        finfo_close($finfo);
    }
    // Try mime_content_type
    else {
        require_once 'upgradephp/ext/mime.php';
        $type = mime_content_type($file);
    }

    // Check for unreliable results
    if (!$type || in_array($type, array('application/octet-stream', 'text/plain'))) {
        // Try file command (only available on *NIX systems)
        $secondOpinion = exec('file -b --mime-type ' . escapeshellarg($file), $foo, $returnCode);
        if ($returnCode === 0 && $secondOpinion) {
            $type = $secondOpinion;
        }
    }

    // Try exif_imagetype for images
    if (!$type || in_array($type, array('application/octet-stream', 'text/plain'))) {
        require_once 'upgradephp/ext/mime.php';
        $exifImageType = exif_imagetype($file);
        if ($exifImageType !== false) {
            $type = image_type_to_mime_type($exifImageType);
        }
    }

    return $type;
}

Cette fonction essaie séquentiellement le natif fonctions finfo_file, mime_content_type, file command et exif_imagetype pour déterminer le type de contenu. Si l'une de ces méthodes renvoie un résultat fiable, elle est utilisée. Sinon, la fonction renvoie un type de contenu de secours.

Une fois le type de contenu déterminé, vous pouvez définir la variable $the_content_type comme suit :

$the_content_type = getFileMimeType($filepath);

Cette approche fournit une approche robuste solution pour déterminer le type de contenu de différents types de fichiers en PHP, garantissant que vos pièces jointes sont affichées correctement par les clients de messagerie.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn