Установлен шаблон на Wordpress. Прописана форма обратной связи, которая отправляет сообщения на указанный в настройках темы адрес. Проблема в том, что адрес (@mail.ru) и веб-интерфейс этого почтовика не понимает кодировки сообщения. Вот так не понимает:
Если указать почту на гмейл, все корректно отображается. Стоить забор почты с мейлу на гмейл, и собранное письмо с мейл.ру на гмейле тоже отображается. Проблема только в мейлру, которому что-то непонятно..
От себя добавлю, что пробовал дописывать $mailheaders = "Content-type:text/plain;charset=windows-1251rn";, но не помогает...
Полный код файла:Полный
<?php
/**
* The main template file for display contact page.
*
*
* @package WordPress
* @subpackage PHOTOBABAY
*/
/**
* Custom function to get current URL
**/
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
<br/><br/>
<form id="contact_form" method="post" action="<?php echo curPageURL(); ?>">
<p style="margin-top:20px">
<label for="your_name">Имя</label><br/>
<input id="your_name" name="your_name" type="text" style="width:90%"/>
</p>
<p style="margin-top:20px">
<label for="email">Email</label><br/>
<input id="email" name="email" type="text" style="width:90%"/>
</p>
<p style="margin-top:20px">
<label for="message">Сообщение</label><br/>
<input id="message" name="message" type="text" style="width:90%"/>
</p>
<br/><br/>
<p style="margin-top:20px">
<input type="submit" value="Отправить"/>
</p>
</form>
<div id="reponse_msg"></div>
<?php
}
//if submit form
else
{
/*
|--------------------------------------------------------------------------
| Mailer module
|--------------------------------------------------------------------------
|
| These module are used when sending email from contact form
|
*/
//Get your email address
$contact_email = get_option('pm_contact_email');
//Enter your email address, email from contact form will send to this addresss. Please enter inside quotes ('myemail@email.com')
define('DEST_EMAIL', $contact_email);
//Change email subject to something more meaningful
define('SUBJECT_EMAIL', 'Письмо с сайта PhotoBabay.com');
//Thankyou message when message sent
define('THANKYOU_MESSAGE', 'Спасибо! Ваше сообщение было успешно отправлено.');
//Error message when message can't send
define('ERROR_MESSAGE', 'Произошла непредвиденная ошибка. Попробуйте, пожалуйста, позже.');
/*
|
| Begin sending mail
|
*/
$from_name = $_POST['your_name'];
$from_email = $_POST['email'];
$message = 'Имя: '.$from_name.PHP_EOL;
$message.= 'Email: '.$from_email.PHP_EOL.PHP_EOL;
$message.= 'Сообщение: '.PHP_EOL.$_POST['message'];
if(!empty($from_name) && !empty($from_email) && !empty($message))
{
mail(DEST_EMAIL, SUBJECT_EMAIL, $message);
echo THANKYOU_MESSAGE;
echo '</p>';
exit;
}
else
{
echo ERROR_MESSAGE;
exit;
}
/*
|
| End sending mail
|
*/
}
?>[свернуть]
Код, который, по моему мнению, нужно подправить (дописать чо-нить :))PHP код:Прошу помощи
/*
|
| Begin sending mail
|
*/
$from_name = $_POST['your_name'];
$from_email = $_POST['email'];
$message = 'Имя: '.$from_name.PHP_EOL;
$message.= 'Email: '.$from_email.PHP_EOL.PHP_EOL;
$message.= 'Сообщение: '.PHP_EOL.$_POST['message'];
if(!empty($from_name) && !empty($from_email) && !empty($message))
{
mail(DEST_EMAIL, SUBJECT_EMAIL, $message);
echo THANKYOU_MESSAGE;
echo '</p>';
exit;
}
else
{
echo ERROR_MESSAGE;
exit;
}
/*
|
| End sending mail
|
*/
}
- 01.07.2012 19:56
Последний раз редактировалось ADvi; 01.07.2012 в 19:59.
- 02.07.2012 00:24
- Регистрация: 09.10.2011
- Сообщений: 1,813
- Репутация: 251
ADvi, у Вас с ПХП как? Читайте про фунцию convert_cyr_string
Спасибо сказали:
ADvi(02.07.2012), - 02.07.2012 01:02
mail(DEST_EMAIL, SUBJECT_EMAIL, $message);
замените на:
mail(DEST_EMAIL, SUBJECT_EMAIL, $message, "Content-Type: text/plain; windows-1251" );Спасибо сказали:
ADvi(02.07.2012), - 02.07.2012 15:32PHP код:Попробуйте так
$message = iconv("utf-8", "windows-1251", $message);
mail(DEST_EMAIL, SUBJECT_EMAIL, $message);
Спасибо сказали:
ADvi(02.07.2012), - 02.07.2012 15:40
HiNeX, Спасибо, Ваш вариант сработал
- 02.07.2012 16:04
HiNeX, это костыль. Письмо должно отправлять с верной кодировкой, иначе потом в другом почтовике будет криво.
- 02.07.2012 16:13
leonidukg, согласен. Возможным решением может быть отправка хидера с кодировкой UTF-8 или Windows-1251, при использовании этого костыля...
- 02.07.2012 16:26
HiNeX, Да просто нужно:
mail(DEST_EMAIL, SUBJECT_EMAIL, $message, "Content-Type: text/plain; UTF-8" );Спасибо сказали:
ADvi(09.07.2012),
Тэги топика:
Похожие темы
Темы | Раздел | Ответов | Последний пост |
---|---|---|---|
Неверная кодировка сервера! | Прочее | 3 | 28.02.2012 18:39 |
Автозаполнение формы обратной связи, как это сделать ? | Web программирование | 20 | 18.01.2012 10:46 |
Форма обратной связи на WP | Web программирование | 4 | 15.08.2011 14:06 |
Форма обратной связи на WP | Вопросы от новичков | 2 | 15.08.2011 01:32 |
Форма обратной связи | Web программирование | 13 | 28.07.2011 12:19 |