如何使用phpmailer与utf8与外部主机

时间:2014-09-11 07:27:41

标签: php utf-8 phpmailer

我相信大多数人已经完成了某种事情,但是我无法使用正确的字符集来处理这个代码的html格式的phpmailer某种方式尽管我已经尝试了很多方式。你们能否抓住下面代码可能出现的问题?

如果我将“Content-Type:text / html”替换为“Content-Type:text / plain”,那么utf8只适用于邮件正文但不能主题仍然会收到错误的标题警告除了邮件似乎不是html格式无论是。我应该写什么来使用外部邮件服务器到这个代码?

$message =  "Hi $uname,\r\n\r\n\r\n";
$message .= "$passwordLink\r\n\r\n\r\n";
$message .= "you just hit password recovery request\r\n;
$headers  = "MIME-Version: 1.0\r\n";
$headers .= "From: Password Service <service@domain.com> \n";
$headers .= "To-Sender: \n";
$headers .= "X-Mailer: PHP\n"; 
$headers .= "Reply-To: noreply@domain.com\n"; 
$headers .= "Return-Path: noreply@domain.com\n"; 
$headers .= "Content-Type: text/html; charset=utf-8";
$host     = "mailgw.domain.com";
$subject = "Pass reminder service";
@mail($email,$subject,$message,$headers);
return str_replace("\r\n","<br/>",$message);

提前致谢,

1 个答案:

答案 0 :(得分:0)

通过此函数http://php.net/manual/en/function.utf8-encode.php传递$ message和$ subject。

要使用外部服务器,我建议使用PHPMailer类https://github.com/PHPMailer/PHPMailer,这样你就可以这样做:

$mail = new PHPMailer;

//$mail->SMTPDebug = 3;                               // Enable verbose debug output

$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp1.example.com;smtp2.example.com';  // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = 'user@example.com';                 // SMTP username
$mail->Password = 'secret';                           // SMTP password
$mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587;  

...