Я хочу отправить сообщение об этом письме в кодировке utf8.
что я могу сделать для этого
include 'functions.php'; $name = stripslashes($_POST['name']); $email = trim($_POST['email']); $subject = stripslashes($_POST['subject']); $message = stripslashes($_POST['message']); $cap=strtoupper($_POST['cap']); $error = ''; $mail = mail(WEBMASTER_EMAIL,$subject,$message, "From: ".$name." <".$email.">\r\n" ."Reply-To: ".$email."\r\n" ."X-Mailer: PHP/" . phpversion());
что я могу отправить в utf8?
Вы можете указать кодировку в заголовках электронной почты, например:
$mail = mail(WEBMASTER_EMAIL,$subject,$message, "From: ".$name." <".$email.">\r\n" ."Reply-To: ".$email."\r\n" ."Content-type: text/html; charset=UTF-8\r\n" ."X-Mailer: PHP/" . phpversion());
Вы можете использовать функцию utf8_encode php. Вот так:
$message = utf8_encode(stripslashes($_POST['message']));
Это сохранит строку utf8, закодированную в переменной $ message или любой другой.
Изменить :
Если вы используете библиотеку swiftmailer, по умолчанию будет использоваться кодировка utf8.
Вам нужно установить кодировку utf-8 в заголовках, а также закодировать тему, потому что она легко повреждается. Я лично создаю свою собственную функцию, которая также добавляет возможность установить адрес отправителя:
function mail_utf8 ($to, $subject='', $message='', $from='', $header='') { if (preg_match("/\<html.*\>/i", $message)) $content_type = "html"; else $content_type = "plain"; $header .= "\nMIME-Version: 1.0"; $header .= "\nContent-type: text/$content_type; charset=UTF-8"; if ($from) $header .= "\nFrom: ".$from; mail($to, "=?UTF-8?B?".base64_encode($subject)."?=", $message, trim($header)); }