Problema con acentos en envío de correos electrónicos

publicado por: Anonymous

tengo una función en PHP donde proceso el correo que es la siguiente

function enviarEmailST($email, $nombre, $asunto, $cuerpo){
require_once 'PHPMailer/PHPMailerAutoload.php';
$mail = new PHPMailer();
$mail->isSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'tls';// Enable TLS encryption, `ssl` also accepted
$mail->Host = 'mail.correo.com';//Modificar
$mail->Port = 237;//Modificar

$mail->Username = '[email protected]'; //Modificar
$mail->Password = 'password'; //Modificar

$mail->setFrom('[email protected]', 'Empresa - Soporte T$eacute;cnico');//Modificar
$mail->addAddress($email, $nombre);

$mail->Subject = $asunto;
$mail->Body    = $cuerpo;
$mail->IsHTML(true);
$mail->smtpConnect([
'ssl' => [
  'verify_peer' => false,
  'verify_peer_name' => false,
  'allow_self_signed' => true
]
]);

if($mail->send()) {
    return true;
} else {
    return false;
}
}

Puntualmente cuando armo lo que sería el remitente hago ‘Empresa – Soporte T$eacute;cnico’ pero cuando el correo se recibe, éste no considera los acentos del remitente.

Mientras tanto, tengo un formulario desde donde envío el correo electrónico.

<form class="ui form" role="form" action="envio.php" method="POST" accept-charset="utf-8" autocomplete="off">
<div class="ui segment">

    <div class="three fields">
        <div class="field">
            <label>Nombre de Usuario:</label>
            <input id="usuario" type="text" name="usuario" value="<?php echo $row['usuario']; ?>">
        </div>

        <div class="field">
            <label>Nombre y Apellido:</label>
            <input id="nombre" type="text" name="nombre" value="<?php echo $row['nombre']; ?>" >
        </div>

        <div class="field">
            <label>Correo Electrónico:</label>
            <input id="email" type="email" name="email" value="<?php echo $row['correo']; ?>" >
        </div>

        <div class="field">
            <label>Id Usuario:</label>
            <input name="id" id="id" type="text" value="<?php echo $id; ?>">
        </div>
    </div>

    <div class="field">
        <label>Asunto:</label>
        <input id="asunto" type="text" name="asunto">
    </div>

    <div class="field">
        <textarea id="cuerpo" type="textarea" name="cuerpo" rows=15 ></textarea>
    </div>

    <!--Botones de envío de la información-->
    <button type="submit" name="save" class="ui green icon button">
      <i class="send icon"></i>
      Enviar
    </button>

</div>
</form>

Resulta que si en el ASUNTO coloco acentos, también se ignoran al recibir el correo pero si coloco acentos en lo que sería el CUERPO del correo electrónico, esos SI LOS TOMA EN CUENTA

Alguien puede decirme qué esta pasando ?

PD: QUIERO ACLARAR QUE EL CORREO ELECTRONICO SE ENVIA PERFECTAMENTE… EL PROBLEMA SON LOS ACENTOS DEL USUARIO REMITENTE (OSEA YO) Y LOS ACENTOS DEL ASUNTO

solución

Tuve el mismo problema y lo pude solucionar de la siguiente manera hay que codificar el subject para que tome caracteres especiales como acentos:

$Subject = "=?ISO-8859-1?B?".base64_encode($asunto)."=?=";

También usando la clase PHPMailer podemos configurarlo para que el envió lo haga con codificación de caracteres UTF-8 usando el parámetro “CharSet“:

// Activa la condificacción utf-8
$mail->CharSet = 'UTF-8';
Respondido por: Anonymous

Leave a Reply

Your email address will not be published.