Pergunta

Eu tento usar o PHPMailer para enviar registro, ativação. ETC Mail para usuários:

require("class.phpmailer.php");
$mail -> charSet = "UTF-8";
$mail = new PHPMailer();
$mail->IsSMTP();  
$mail->Host     = "smtp.mydomain.org";  
$mail->From     = "name@mydomain.org";
$mail->SMTPAuth = true; 
$mail->Username ="username"; 
$mail->Password="passw"; 
//$mail->FromName = $header;
$mail->FromName = mb_convert_encoding($header, "UTF-8", "auto");
$mail->AddAddress($emladd);
$mail->AddAddress("mytest@gmail.com");
$mail->AddBCC('mytest2@mydomain.org', 'firstadd');
$mail->Subject  = $sub;
$mail->Body = $message;
$mail->WordWrap = 50;  
if(!$mail->Send()) {  
   echo 'Message was not sent.';  
   echo 'Mailer error: ' . $mail->ErrorInfo;  
}

o $message é contém caracteres latinos. Infelizmente, todos os webmail (gmail, webmail.mydomain.org, emailaddress.domain.xx) usam codificação diferente.

Como posso forçar a usar a codificação UTF-8 para mostrar meu e-mail exatamente o mesmo em todas as caixas de correio?

Eu tento converter a largura do cabeçalho do correio mb_convert_encoding(), mas sem sorte.

Foi útil?

Solução

Se você tem 100% de certeza, a mensagem conterá ISO-8859-1, você pode usar UTF8_ENCODE Como David diz. Caso contrário, use mb_detect_encoding e mb_convert_encoding na mensagem $.

Também observe que

$mail -> charSet = "UTF-8"; 

Deve ser substituído por:

$mail->CharSet = 'UTF-8';

E colocada depois a instanciação da classe (após o new). As propriedades são sensíveis ao caso! Veja o Phpmailer Doc FOT A LISTA E O SPELING EXATO.

Além disso, a codificação padrão do phpmailer é 8bit o que pode ser problemático com os dados UTF-8. Para consertar isso, você pode fazer:

$mail->Encoding = 'base64';

Observe isso 'quoted-printable' provavelmente também funcionaria nesses casos (e talvez até 'binary'). Para mais detalhes, você pode ler RFC1341-Campo de cabeçalho de codificação de transferência de conteúdo.

Outras dicas

$mail -> CharSet = "UTF-8";
$mail = new PHPMailer();

linha $mail -> CharSet = "UTF-8"; deve estar depois $mail = new PHPMailer(); E sem espaços!

tente isso

$mail = new PHPMailer();
$mail->CharSet = "UTF-8";

Desculpe por estar atrasado na festa. Dependendo da configuração do seu servidor, você pode ser obrigado a especificar caráter estritamente com letras minúsculas UTF-8, caso contrário, será ignorado. Experimente se você acabar aqui procurando soluções e nenhuma das respostas acima ajuda:

$mail->CharSet = "UTF-8";

deve ser substituído por:

$mail->CharSet = "utf-8";

Eu me trabalho dessa maneira

  $mail->FromName = utf8_decode($_POST['name']);

http://php.net/manual/en/function.utf8-decode.php

$mail = new PHPMailer();
$mail->CharSet = "UTF-8";
$mail->Encoding = "16bit";

eu estava conseguindo Ó Em $ Mail-> Assunto /W Phpmailer.

Então, para mim, a solução completa é:

// Your Subject with tildes. Example.
$someSubjectWithTildes = 'Subscripción España';

$mailer->CharSet = 'UTF-8';
$mailer->Encoding = 'quoted-printable';
$mailer->Subject = html_entity_decode($someSubjectWithTildes);

Espero que ajude.

Se sua mensagem usar o latim1, você pode usar UTF8_ENCODEFunciona para mim, de qualquer maneira.

@ $mail -> charSet = "UTF-8";

--- Esta linha deve estar sob

$mail = new PHPMailer(); line.

pff ..


Sim, está correto. Você tem que colocá -lo após a instanciação do objeto.

A maneira mais simples e ajudará você com o conjunto de charset para UTF-8

$mail->CharSet = "UTF-8"

Para evitar problemas de codificação de caracteres ao enviar e-mails usando a classe Phpmailer, podemos configurá-lo para enviá-lo com a codificação de caracteres UTF-8 usando o parâmetro "Charset", como podemos ver no seguinte código PHP:

$mail = new PHPMailer();
$mail->From = 'midireccion@email.com';
$mail->FromName = 'Mi nombre';
$mail->AddAddress('emaildestino@email.com');
$mail->Subject = 'Prueba';
$mail->Body = '';
$mail->IsHTML(true);


// Active condition utf-8
$mail->CharSet = 'UTF-8';


// Send mail
$mail->Send();
$mail = new PHPMailer();
$mail -> CharSet = "UTF-8";

$ Mail -> charset = "UTF -8"; --- Essa linha deve estar abaixo de $ Mail = new Phpmailer (); linha.

pff ..

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top