PHP初心者です。
現在、添付ファイルありのメールフォームを作成しているのですが、日本語のファイルを送信すると、ファイル名が文字化けしてしまいます。
ファイル自体は問題なく開けており、ファイル名だけがおかしいという感じです。Subjectや本文は問題なく表示されております。
こちら原因と対策について、ご教示いただけると幸いです。
<?php $field_email = $_POST['email']; $file_name = $_FILES['file']['name']; $file_path = $_FILES['file']['tmp_name']; $headers = ''; $headers .= "Content-Type: multipart/mixed;boundary=\"__BOUNDARY__\"\n"; $headers .= 'From: '.$field_email."\r\n"; $headers .= 'Reply-To: '.$field_email."\r\n"; $subject = 'タイトル'; $body_message = "--__BOUNDARY__\n"; $body_message .= "Content-Type: text/plain; charset=\"ISO-2022-JP\"\n\n"; $body_message .= "本文" $body_message .= "--__BOUNDARY__\n"; $body_message .= "Content-Type: application/octet-stream; name=\"{$file_name}\"\n"; $body_message .= "Content-Disposition: attachment; filename=\"{$file_name}\"\n"; $body_message .= "Content-Transfer-Encoding: base64\n"; $body_message .= "\n"; $body_message .= chunk_split(base64_encode(file_get_contents($file_path))); $body_message .= "--__BOUNDARY__--"; $mail_status = mb_send_mail($mail_to, $subject, $body_message, $headers); if ($mail_status) { ?> <script type="text/javascript"> alert('メッセージを送信しました。'); window.location = '/'; </script> <?php } else { ?> <script type="text/javascript"> alert('メッセージ送信に失敗しました。'); window.location = '/'; </script> <?php } ?>
追記
mbstring
Multibyte Supportenabled | enabled |
Multibyte string engine | libmbfl |
HTTP input encoding translation | disabled |
libmbfl version | 1.3.2 |
oniguruma version | 5.9.6 |
mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.
Multibyte (japanese) regex support | enabled |
Multibyte regex (oniguruma) backtrack check | On |
Multibyte regex (oniguruma) version | 5.9.6 |
Directive | Local Value | Master Value |
---|---|---|
mbstring.detect_order | no value | no value |
mbstring.encoding_translation | Off | Off |
mbstring.func_overload | 0 | 0 |
mbstring.http_input | no value | no value |
mbstring.http_output | no value | no value |
mbstring.http_output_conv_mimetypes | ^(text/ | application/xhtml+xml) |
mbstring.internal_encoding | no value | no value |
mbstring.language | ja | neutral |
mbstring.strict_detection | Off | Off |
mbstring.substitute_character | no value | no value |
Directive | Local Value | Master Value |
---|---|---|
default_charset | UTF-8 | UTF-8 |
internal_encoding | no value | no value |
iconv.internal_encoding | no value | no value |
mbstring.internal_encoding | no value | no value |
回答3件
あなたの回答
tips
プレビュー