Cómo enviar un correo electrónico en utf8

Quiero enviar un mensaje de este correo electrónico en la encoding utf8.

¿Qué puedo hacer por esto?

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." \r\n" ."Reply-To: ".$email."\r\n" ."X-Mailer: PHP/" . phpversion()); 

¿Qué puedo enviar esto en utf8?

Puede especificar la encoding en los encabezados del correo electrónico, así:

 $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()); 

Puede usar la función de utf8_encode de php. Al igual que:

 $message = utf8_encode(stripslashes($_POST['message'])); 

Esto almacenará la cadena utf8 codificada en su variable $ message o cualquier otra para ese asunto.

Editar :

Si usa la biblioteca swiftmailer, tendrá la encoding utf8 por defecto.

Debe establecer la encoding de utf-8 en los encabezados y también codificar el tema, ya que se corrompe fácilmente. Yo personalmente creo mi propia función que también agrega la capacidad de configurar la dirección del remitente:

 function mail_utf8 ($to, $subject='', $message='', $from='', $header='') { if (preg_match("/\/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)); }