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



 

Здравствуйте, гость (

| Вход | Регистрация )

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


Кто может помочь?
Сайт на 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


Используйте функцию 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


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


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


Можно также добавить в ваш скрипт $mail -> charSet = "UTF-8";

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Помогите вспомнить рекламного бота Телеграм для обмена рекламой
0 Mixatraider 725 21.2.2024, 23:42
автор: Mixatraider
Открытая тема (нет новых ответов) Помогите рещить проблему с монитором.
Почему низкое разрешение при подключении монитора через displayport?
0 Levels 1702 11.12.2020, 0:48
автор: Levels
Открытая тема (нет новых ответов) Помогите кто нибудь получить партнерку Росбанк!
7 heisenberg_mw 2340 7.8.2020, 9:28
автор: heisenberg_mw
Открытая тема (нет новых ответов) Помогите найти тему пожалуйста
7 virtas 12492 24.7.2020, 17:02
автор: -JamesSmips-
Открытая тема (нет новых ответов) Помогите с поиском доноров
3 tehno_music 3354 4.11.2019, 17:15
автор: goblin78


 



RSS Текстовая версия Сейчас: 20.4.2024, 2:15
Дизайн