Hola. Después de revisar el manual PHP y coger un poquito de aquí y otro poquito de allá, conseguí que funcionara este dichoso formulario PHP. Funciona en Outlook, webmail y hotmail, pasa correctamente acentos y eñes y además sirve para enviar archivos adjuntos. Es muy probable que haya cosas que esten hechas en plan chapuza y que muchos de vosotros sabréis optimizar, pero yo personalmente prefiero no tocarlo que estoy muy pez en PHP (ahora que ya me funciona el jodio...). Muchas gracias a los foreros que me han ayudado con esto. Dejo el código:
<?php
$boundary='didondinaditondelosdudosdodudundodudind on';
$email_to = "miemail";
$bounce_email = "miemail";
$reply_to = $_POST['email'];
$email_from = $_POST['email']; // Email del remitente
$email_subject = $_POST['asunto']; // Asunto del mail
$email_txt = "<p>" . $_POST['comentarios'] . "</p><p>" . $_POST['codweb'] . "</p>"; // Texto en el cuerpo del mensaje
$headers = "MIME-Version: 1.0 \n" ;
$headers .= "From: " . "" . mb_encode_mimeheader (mb_convert_encoding($email_from,"utf-8","AUTO")) . "" . "<".$email_from."> \n";
$headers .= "Reply-To: " . "" . mb_encode_mimeheader (mb_convert_encoding($email_from,"utf-8","AUTO")) ."" . "<".$email_from."> \n";
$headers .= "X-Mailer:PHP/".phpversion()."\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n\n";
$headers .= "Content-Type: text/html; charset=utf-8 \r\n\n";
// Mostrando el cuerpo del mensaje////////////////////////////////////////////////
$email_message = "--". $boundary ."\n"; //Apertura de frontera----------------------------------
$email_message .= "Content-Type: text/html; charset=utf-8 \r\n\n";
$email_message .= "$email_txt\n";
$email_message = mb_convert_encoding($email_message, "utf-8","AUTO");
// Leyendo el archivo para adjuntar/////////////////////////////////////////////////////////////
$newfile = $_POST['adjunto'];
$fileatt = "files/" . $newfile;
$fileatt_type = "application/octet-stream";
$fileatt_name = $_POST['adjunto'];
$file = fopen($fileatt,'rb');
$data = fread($file,filesize($fileatt));
fclose($file);
$data = chunk_split(base64_encode($data));
// Adjuntando archivo///////////////////////////////////////////////////////////////////////////
if ($fileatt_name == "") {
$email_message .= "";
} else {
$email_message = $email_message . "--" .$boundary. "\n";
$email_message .= "Content-Type: {$fileatt_type}; name=\"{$fileatt_name}\"\n";
$email_message .= "Content-Disposition: attachment; filename=\"{$fileatt_name}\"\n";
$email_message .= "Content-Transfer-Encoding: base64\n\n";
$email_message .= $data . "\n\n";
}
// Mostrando el asunto del mensaje////////////////////////////////////////////////////////////
$email_subject = mb_convert_encoding($email_subject, "utf-8","AUTO");
$email_subject = mb_encode_mimeheader($email_subject);
// Enviando el mail///////////////////////////////////////////////////////////////////////////
$ok = mail($email_to, $email_subject, $email_message, $headers);
?>