2012-12-19 28 views
11

Tôi đang cố gắng gửi e-mail với lớp PHPmailer, nhưng html tôi gửi, trống hoặc các ký tự không được định cấu hình và không có dấu.Không thể gửi email với các ký tự chính xác bằng PHPMailer

<?php 
header("Content-Type: text/html; charset=ISO-8859-1", true); 
require_once('class.phpmailer.php'); 
include "config.php"; 

$nome = trim($_POST['nome']); 
$email = trim($_POST['Imail']); 
$usuario = trim($_POST['usuario']); 
$senha = trim($_POST['senha']); 
$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch 

$mail->IsSMTP(); // telling the class to use SMTP 

try { 
    $mail->AddAddress($email, $nome); 
    $mail->SetFrom('[email protected]', 'Conectfarma'); 
    $mail->AddReplyTo('[email protected]', 'Conectarma'); 
    $subject = 'Guia Rápido de Interações Medicamentosas'; 
    $sendsubject= "=?utf-8?b?".base64_encode($subject)."?="; 
    $mail->Subject = $sendsubject; 
$mensagem = "<!DOCTYPE html> 
<html> 
<body> 
Bem vindo ao Guia Rápido de Interações Medicamentosas em Neurologia e Psiquiatria 
Seu Login e Senha para acesso ao aplicativo são:\n 
Login:" .$nome. "\n, Senha : " .$senha. 
"\nAtenciosamente, 
Conectfarma Publicações Científicas 
</body> 
</html>"; 

    $mail->Body = $mensagem; 
    //$mail->CreateBody($mensagem); 
    $mail->IsHTML(true); 
    $mail->Send(); 
    //$mail->CharSet="UTF-8"; 
    echo "<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'> 
<title>Confirmação</title> 
</head> 
<body> 
Não vai maçã. 
</body> 
</html> 
"; 
} catch (phpmailerException $e) { 
    echo $e->errorMessage(); //Pretty error messages from PHPMailer 
} catch (Exception $e) { 
    echo $e->getMessage(); //Boring error messages from anything else! 
} 
     } 
    } 
} 

?> 

Tôi đã nhảy cấu hình SMTP vì nó hoạt động bình thường.

+1

Đảm bảo rằng mã của bạn là UTF8, bỏ ghi chú '$ mail-> CharSet =" UTF-8 ";'. Không viết mã bằng ngôn ngữ mẹ đẻ của bạn. –

+0

@TomaszKowalczyk vừa nhận xét rằng, nhưng vẫn, email mà im nhận được là "Nà £ o vai maçà £." và xin lỗi về ngôn ngữ mẹ đẻ. – darkman

+0

Bạn có thực sự chắc chắn rằng các tệp của bạn được mã hóa UTF-8 không? –

Trả lời

32

Kiểm tra kỹ mã PHP của bạn cũng đang được mã hóa UTF-8.

Bỏ ghi chú dòng //$mail->CharSet="UTF-8"; và di chuyển nó idealy ngay sau khi $mail = new PHPMailer(true);, vì vậy mã sẽ trông như thế:

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

Trong mã của bạn nó được gọi sau khi $mail->Send(); do đó các thiết lập charset đã không mất trong đếm. ..