X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость ( Вход | Регистрация )

Открыть тему
Тема закрыта
> Помогите с кодировкой письма, php mail
pulsar21
pulsar21
Topic Starter сообщение 26.8.2014, 12:44; Ответить: pulsar21
Сообщение #1


Бывалый
****

Группа: User
Сообщений: 329
Регистрация: 4.1.2013
Из: Николаев
Поблагодарили: 130 раз
Репутация:   24  


Кто может помочь?
Сайт на WP, со страницы обратной связи приходят письма с аброкадаброй. Как и где правильно указать нужную кодировку?
Вот код из файла, который отвечает за отправку писем:
Код
<?php
/*
Template Name: Contact Form
*/
?>

<?php
if(isset($_POST['submitted'])) {
        if(trim($_POST['contactName']) === '') {
            $nameError = 'Please enter your name.';
            $hasError = true;
        } else {
            $name = trim($_POST['contactName']);
        }
        
        if(trim($_POST['email']) === '')  {
            $emailError = 'Please enter your email address.';
            $hasError = true;
        } else if (!eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$", trim($_POST['email']))) {
            $emailError = 'You entered an invalid email address.';
            $hasError = true;
        } else {
            $email = trim($_POST['email']);
        }
            
        if(trim($_POST['comments']) === '') {
            $commentError = 'Please enter a message.';
            $hasError = true;
        } else {
            if(function_exists('stripslashes')) {
                $comments = stripslashes(trim($_POST['comments']));
            } else {
                $comments = trim($_POST['comments']);
            }
        }
            
        if(!isset($hasError)) {
            $emailTo = get_option('publisher_email');
            if (!isset($emailTo) || ($emailTo == '') ){
                $emailTo = get_option('admin_email');
            }
            $subject = '[Contact Form] From '.$name;
            $body = "Name: $name \n\nEmail: $email \n\nComments: $comments";
            $headers = 'From: '.$name.' <'.$emailTo.'>' . "\r\n" . 'Reply-To: ' . $email;
            
            mail($emailTo, $subject, $body, $headers);
            $emailSent = true;
        }
    
} ?>


Сообщение отредактировал pulsar21 - 26.8.2014, 12:45


--------------------
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
makedonskiy
makedonskiy
сообщение 26.8.2014, 14:20; Ответить: makedonskiy
Сообщение #2


Частый гость
**

Группа: User
Сообщений: 75
Регистрация: 31.1.2014
Поблагодарили: 23 раза
Репутация:   4  


Используйте функцию wpmail http://codex.wordpress.org/Function_Reference/wp_mail.

Либо почитайте в гугле про кодировку функции `mail()`. А конкретно надо отсылать кодировку `Content-type`

В SITE_CHARSET напишите кодировку вашего сайта.

CODE

<?php

define('SITE_CHARSET', 'utf-8');

if(isset($_POST['submitted'])) {
if(trim($_POST['contactName']) === '') {
$nameError = 'Please enter your name.';
$hasError = true;
} else {
$name = trim($_POST['contactName']);
}

if(trim($_POST['email']) === '') {
$emailError = 'Please enter your email address.';
$hasError = true;
} else if (!eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$", trim($_POST['email']))) {
$emailError = 'You entered an invalid email address.';
$hasError = true;
} else {
$email = trim($_POST['email']);
}

if(trim($_POST['comments']) === '') {
$commentError = 'Please enter a message.';
$hasError = true;
} else {
if(function_exists('stripslashes')) {
$comments = stripslashes(trim($_POST['comments']));
} else {
$comments = trim($_POST['comments']);
}
}

if(!isset($hasError)) {
$emailTo = get_option('publisher_email');
if (!isset($emailTo) || ($emailTo == '') ){
$emailTo = get_option('admin_email');
}
$subject = '[Contact Form] From '.$name;
$body = "Name: $name \n\nEmail: $email \n\nComments: $comments";
$headers = 'Content-type: text/html; charset='. SITE_CHARSET . "\r\n";
$headers .= 'From: '.$name.' <'.$emailTo.'>' . "\r\n" . 'Reply-To: ' . $email;

mail($emailTo, $subject, $body, $headers);
$emailSent = true;
}

} ?>


А вообще, можно было сделать вот так

Код
<?php

define('SITE_CHARSET', 'utf-8');

if(!isset($_POST['submitted']))
    exit;

$name = !empty($_POST['contactName']) ? trim($_POST['contactName']) : false;
$email = (!empty($_POST['email']) && preg_match("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$", trim($_POST['email']))) ? trim($_POST['email']) : false;
$comments = !empty($_POST['comments']) ? stripslashes(trim($_POST['comments'])) : false;

if($name && $email && $comments) {

    $emailTo = get_option('publisher_email');

    if(!isset($emailTo) || ($emailTo == ''))
        $emailTo = get_option('admin_email');
    
    $subject = "[Contact Form] From {$name}";
    
    $body = "Name: {$name}\n\nEmail: {$email}\n\nComments: {$comments}";
    $headers = 'Content-type: text/html; charset='. SITE_CHARSET . "\r\n";
    $headers .= "From: {$name} <{$emailTo}>\r\nReply-To: {$email}";

    mail($emailTo, $subject, $body, $headers);
}


Сообщение отредактировал makedonskiy - 26.8.2014, 14:21
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pulsar21
pulsar21
Topic Starter сообщение 26.8.2014, 16:06; Ответить: pulsar21
Сообщение #3


Бывалый
****

Группа: User
Сообщений: 329
Регистрация: 4.1.2013
Из: Николаев
Поблагодарили: 130 раз
Репутация:   24  


makedonskiy, спасибо. Оказалось все банальней. У меня была настроена пересылка с почты на сервере (хостинге) на ящик на mail.ru. Нужно было просто выбрать нужную кодировку писем на сервере.
Но, все-равно, для меня информация была полезной. Может, еще кому понадобится...


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Billing8
Billing8
сообщение 26.8.2014, 16:23; Ответить: Billing8
Сообщение #4


Новичок
*

Группа: User
Сообщений: 20
Регистрация: 9.6.2014
Поблагодарили: 0 раз
Репутация:   -1  


Можно также добавить в ваш скрипт $mail -> charSet = "UTF-8";
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Помогите выбрать программу
Помогите выбрать программу
11 impak 1327 Вчера, 13:11
автор: Mikki
Открытая тема (нет новых ответов) Помогите найти плагин на WP
Отзывы с профилей соц сетей
1 SEOMR 430 30.11.2017, 7:18
автор: Nell
Открытая тема (нет новых ответов) Помогите найти проблему
Долгий ответ сервера
6 maxim1249 673 29.11.2017, 17:27
автор: genjnat
Открытая тема (нет новых ответов) Помогите оценить новотник. Плиз
1 Alex-777 511 29.11.2017, 7:18
автор: grumdas
Открытая тема (нет новых ответов) Помогите с неймингом для сборника советов
советы по разработки и жизни
11 coremission 1870 15.11.2017, 22:23
автор: rogefer


 



RSS Текстовая версия Сейчас: 12.12.2017, 22:08
Дизайн