Я искал кучи в сети, но ничто, кажется, не заставляет мой код работать. Мой php-код приводит к тому, что электронные письма выглядят следующим образом:
叹 涟: Bob メ ッ セ 〖ジ: 銇 撱 倱 銇 仭 銇
Они должны выглядеть так (с японскими персонажами):
名 前: Bob メ ッ セ ー ジ: こ ん い ち は.
Он отлично работает при вводе английских символов в поля:
名 前: Chris メ ッ セ ー ジ: Привет, это тестовое сообщение.
Вот код. Сама страница сайта кодируется как euc-jp. Тема сообщения отображается без проблем. Текст искажен в моем почтовом приложении Mac и на моих устройствах Android (приложение gmail, приложение для Android android). Возможно, это проблема с функцией htmlspecialchars. Я не знаю достаточно о php, чтобы исправить это. Пожалуйста, помогите мне!
<?php // Check for empty fields if(empty($_POST['name']) || empty($_POST['email']) || empty($_POST['message']) || !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL)) { echo "No arguments Provided!"; return false; } $name = strip_tags(htmlspecialchars($_POST['name'])); $email_address = strip_tags(htmlspecialchars($_POST['email'])); $message = strip_tags(htmlspecialchars($_POST['message'])); $to = "test@topenglishkanazawa.com\r\n"; $email_subject = "お問い合わせ\r\n"; $email_body = "名前: $name<br><br>メッセージ: $message\r\n"; $headers = "From: webform@topenglishkanazawa.com\r\n"; $headers .= "Reply-To: $email_address\r\n"; $headers .= "Content-Type:text/html; charset=euc-jp\r\n"; mail($to,'=?euc-jp?B?'.base64_encode($email_subject).'?=',$email_body,$headers); return true; ?>
Обновленный код:
<?php // Check for empty fields if(empty($_POST['name']) || empty($_POST['email']) || empty($_POST['message']) || !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL)) { echo "No arguments Provided!"; return false; } $name = strip_tags(htmlspecialchars($_POST['name'])); $email_address = strip_tags(htmlspecialchars($_POST['email'])); $message = strip_tags(htmlspecialchars($_POST['message'])); $to = 'test@topenglishkanazawa.com'; $email_subject = "お問い合わせ"; $email_body = "名前: $name\n\n"."メッセージ: $message"; $headers = "From: webform@topenglishkanazawa.com\n"; $headers .= "Reply-To: $email_address\n"; mail($to,$email_subject,$email_body,$headers); return true; ?>
Я не знаю, почему, но ваш код работает отлично для меня; Я попробовал:
<?php $_POST['name']= 'Bob'; $name = $_POST['name']; $_POST['email']= 'mailforbob@gmail.com'; $_POST['message']= ' こんいちは'; echo $_POST['name']; // Check for empty fields if(empty($_POST['name']) || empty($_POST['email']) || empty($_POST['message']) || !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL)) { echo "No arguments Provided!"; return false; } $name = strip_tags(htmlspecialchars($_POST['name'],'EUC-JP')); $email_address = strip_tags(htmlspecialchars($_POST['email'])); $message = strip_tags(htmlspecialchars($_POST['message'],'EUC-JP')); $to = 'myemail@myemail.com'; $email_subject = "お問い合わせ"; $email_body = "名前: $name\n\n"."メッセージ: $message"; $headers = "From: webform@topenglishkanazawa.com\r\n"; $headers .= "Reply-To: $email_address\n"; mail($to,$email_subject,$email_body,$headers); echo 'email sent'; return true; ?>
Я предлагаю вам проверить настройки вашего браузера или компьютерного языка;)