PHP で電子メール添付ファイルのコンテンツ タイプを判断する方法

Mary-Kate Olsen
リリース: 2024-11-21 11:08:10
オリジナル
705 人が閲覧しました

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

PHP での電子メール添付ファイルのコンテンツ タイプの決定

PHP では、ファイルを添付した電子メールを送信するには、コンテンツ タイプを指定する必要があります。ファイル。この情報により、電子メール クライアントは添付ファイルを正しく解釈して表示できるようになります。この記事では、この目的のために $the_content_type 変数を適切に設定する方法について説明します。

解決策:

1 つのアプローチには、一連の getFileMimeType() 関数を使用することが含まれます。異なる PHP バージョンと信頼性の低い MIME タイプ関数を処理するためのフォールバック:

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;
}
ログイン後にコピー

この関数ネイティブの finfo_file、mime_content_type、file コマンド、および exif_imagetype 関数を順番に試行して、コンテンツ タイプを決定します。これらのメソッドのいずれかが信頼できる結果を返した場合、それが使用されます。それ以外の場合、関数はフォールバック コンテンツ タイプを返します。

コンテンツ タイプが決定したら、次のように $the_content_type 変数を設定できます。

$the_content_type = getFileMimeType($filepath);
ログイン後にコピー

このアプローチは、堅牢なコンテンツ タイプを提供します。 PHP でさまざまなファイル タイプのコンテンツ タイプを判断し、電子メールの添付ファイルが電子メール クライアントで正しく表示されるようにするためのソリューション。

以上がPHP で電子メール添付ファイルのコンテンツ タイプを判断する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート