【发布时间】:2012-08-23 09:16:35
【问题描述】:
我正在尝试在 PHP 中使用 SMTP 身份验证向 Gmail 发送 HTML 邮件。这是我正在使用的脚本:
require_once "Mail.php";
require_once 'Mail/mime.php';
$from = "Some Name <myemail@gmail.com>";
$to = "Other Name <otheremail@gmail.com>";
$subject = "This is a test";
$crlf = "\n";
$host = "ssl://smtp.gmail.com";
$port = "465";
$username = "myemail@gmail.com";
$password = "mypass";
$headers = array ('From' => $from,
'Return-Path' => $from,
'Subject' => $subject);
$smtp = Mail::factory('smtp',
array ('host' => $host,
'port' => $port,
'auth' => true,
'username' => $username,
'password' => $password));
$mime = new Mail_mime($crlf);
$mime->setTXTBody("This is a test email message");
$mime->setHTMLBody($body);
$body = $mime->get();
$headers = $mime->headers($headers);
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail)) {
echo("<p>" . $mail->getMessage() . "</p>");
} else {
echo("<p>Message successfully sent!</p>");
}
注意:$body 是一个包含图像和其他信息的 HTML 表格。
当我执行脚本失败并出现以下错误:
未能设置发件人:某些名称 [SMTP:无效的响应代码 从服务器收到(代码:555,响应:5.5.2 语法错误。 c6sm20541406obd.22)]
这是我尝试查看的问题所在: 1. 使用“Mail”而不是“smtp”使用相同的脚本,即
$smtp = Mail::factory('Mail');
这很好用。 2. 使用没有 mime.php 的相同脚本,这也可以,但不允许发送 HTML 电子邮件。
有人知道如何将两者结合起来,以便我仍然使用 SMTP 身份验证和发送 HTML 消息吗?
编辑:
这是$mime->headers()的转储:
[MIME-Version] => 1.0
[From] => Some Name
[Return-Path] => Some Name
[Subject] => This is a test
[Content-Type] => multipart/alternative;
boundary="=_8662996a1f586248545d9f01f48e916d"
【问题讨论】:
-
你能转储
$mime->headers()吗? -
我将转储添加到帖子中。谢谢。