Resolvendo Problemas com Acentos em E-mails PHP
Se você está enfrentando problemas com os acentos ao enviar e-mails em português usando PHP, saiba que isso é um problema comum. Felizmente, a solução é simples e envolve a configuração correta do charset e da codificação do e-mail. Aqui está um guia passo a passo para resolver esse problema:
Configuração do Charset:
- O charset define o conjunto de caracteres que será usado no e-mail. Para garantir que todos os caracteres especiais em português sejam exibidos corretamente. Para isso, temos que definir o charset como UTF-8.
- No PHPMailer, você pode fazer isso com a seguinte linha de código:
$mail->CharSet = 'UTF-8';
Configuração da Codificação:
- A codificação base64 é recomendada para garantir que o conteúdo do e-mail seja transmitido corretamente, especialmente quando inclui caracteres especiais.
- No PHPMailer, configure a codificação com a seguinte linha de código:
$mail->Encoding = 'base64';
Isso mesmo! Configurar o charset e a codificação dessa forma no PHPMailer garante que os caracteres especiais sejam exibidos corretamente.
Exemplo Completo:
Aqui está um exemplo completo de como configurar o PHPMailer para enviar e-mails com acentos corretamente:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'path/to/PHPMailer/src/Exception.php';
require 'path/to/PHPMailer/src/PHPMailer.php';
require 'path/to/PHPMailer/src/SMTP.php';
$mail = new PHPMailer(true);
try {
// Configurações do servidor
$mail->isSMTP();
$mail->Host = 'smtp.example.com';
$mail->SMTPAuth = true;
$mail->Username = 'seu_email@example.com';
$mail->Password = 'sua_senha';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
// Configurações do e-mail
$mail->setFrom('seu_email@example.com', 'Seu Nome');
$mail->addAddress('destinatario@example.com', 'Nome do Destinatário');
$mail->Subject = 'Assunto do E-mail';
// Charset e Encoding
$mail->CharSet = 'UTF-8';
$mail->Encoding = 'base64';
// Corpo do e-mail
$mail->isHTML(true);
$mail->Body = '<p>Olá, mundo! É um prazer ajudar você.</p>';
$mail->AltBody = 'Olá, mundo! É um prazer ajudar você.';
$mail->send();
echo 'E-mail enviado com sucesso';
} catch (Exception $e) {
echo "Erro ao enviar e-mail: {$mail->ErrorInfo}";
}
?>
Porém, temos um outro problema com os acentos na língua portuguesa, o qual os comandos adicionados anteriormente não resolve.
Configuração do Subject
Porém no $mail->Subject, é necessário fazer uma configuração adicional:
$mail->Subject = '=?UTF-8?B?' . base64_encode("Currículo de/a: ") . '?=' .$_POST["Name"];
Para garantir que o assunto do e-mail seja exibido corretamente, você deve codificá-lo em base64.
Seguindo esses passos, você deve conseguir enviar e-mails em português sem problemas com acentos. Espero que tenham gostado.
Wellington Pereira
wellington@tonsoft.com.br