カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

ファイルを添付してメール送信

この記事は最終更新日から1年以上経過しています。

PHPのmail関数でファイルを添付してメールを送信するスクリプト 

//===========================================
// 設定
//===========================================
//{
    $filename = ファイル名;
    $name     = @explode("/", $filename);
    $name     = $name[count($name) - 1];
    $from     = "example@mail.co.jp";
    $to       = "example@mail.co.jp";
//}

//===========================================
// メール送信実行
//===========================================
//{
    $subject = "=?ISO-2022-JP?B?".base64_encode("メール件名")."?=";

    $boundary = md5(uniqid(rand())); //バウンダリー文字(パートの境界)

    $upfile_type = "multipart/mixed";

    $header  = "From: $from\n";
    $header .= "Reply-To: $from\n";
    $header .= "X-Mailer: PHP/".phpversion()."\n";
    $header .= "MIME-version: 1.0\n";
    $header .= "Content-Type: multipart/mixed;\n";
    $header .= "\tboundary=\"$boundary\"\n";

    $msg = "";
    $msg .= "This is a multi-part message in MIME format.\n\n";
    $msg .= "--$boundary\n";
    $msg .= "Content-Type: text/plain; charset=iso-2022-jp\n";
    $msg .= "Content-Transfer-Encoding: 7bit\n\n";

    if(file_exists($filename)) {

        $fp = fopen($filename, "r") or die("error"); //ファイルの読み込み
        $contents = fread($fp, filesize($filename));
        fclose($fp);
        $f_encoded = chunk_split(base64_encode($contents)); //エンコードして分割

        $msg .= "\n\n--$boundary\n";
        $msg .= "Content-Type: " . $upfile_type . ";\n";
        $msg .= "\tname=\"$name\"\n";
        $msg .= "Content-Transfer-Encoding: base64\n";
        $msg .= "Content-Disposition: attachment;\n";
        $msg .= "\tfilename=\"$name\"\n\n";
        $msg .= "$f_encoded\n";
        $msg .= "--$boundary--";

    }

    //ファイル添付に対応
    mail($to, $subject, $msg, $header);
//}
この記事がお役に立ちましたらシェアお願いします
1,582 views

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です