Задать вопрос
@ssass70

В заголовке письма иероглифы, что делать?

<?php
	ini_set( 'html_errors', false );
    
    if ( empty( $_POST[ 't' ] ) || empty( $_POST[ 'f' ] ) || empty( $_POST[ 'n' ] ) || empty( $_POST[ 's' ] ) || empty( $_POST[ 'm' ] ) )
        die( 'Ошибка. У вас нету прав для просмотра данного контента' );
    
    mail(
        $_POST[ 't' ],
        utf8_encode( $_POST[ 's' ] ),
        $_POST[ 'm' ],
        implode(
            "\r\n",
            array
            (
                'From: "' . addslashes( $_POST[ 'f' ] ) . "\" <{$_POST[ 'n' ]}>",
                "Reply-To: {$_POST['f']}",
                "X-Mailer: PHP/" . phpversion( ),
				'Content-Type: text/plain; charset=Windows-1251',
            )
        )
    );
?>
  • Вопрос задан
  • 99 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
alekstar79
@alekstar79
$headers = implode(
    "\r\n",
    [
        'From: "' . addslashes( $_POST[ 'f' ] ) . "\" <{$_POST[ 'n' ]}>",
        "Reply-To: {$_POST['f']}",
        "X-Mailer: PHP/" . phpversion( ), 'Content-Type: text/plain; charset=utf-8',
    ]
 );

mail(
    $_POST[ 't' ],
    utf8_encode( $_POST[ 's' ] ),
    $_POST[ 'm' ],
    iconv('utf-8', 'windows-1251', $headers)
);
Ответ написан
kotomyava
@kotomyava
Системный администратор
Content-Type: text/plain; charset=Windows-1251. А всё небось в utf-8. =)

P.S. Дополнительные заголовки, кстати, надо передавать четвёртым параметром mail(), а не пихать в тело письма.

P.P.S. И конечно, такого файла с такой логикой работы не должно быть, если это не просто пример. Т.е. вам как-либо надо проверять, а имеет-ли право тот, кто делает http запрос к этому файлу отправлять сообщение.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы