<?php
require_once "Mail.php";
$from = '<from.gmail.com>';
$to = '<to.yahoo.com>';
$subject = 'Hi!';
$body = "Hi,'n'nHow are you?";
$headers = array(
'From' => $from,
'To' => $to,
'Subject' => $subject
);
$smtp = Mail::factory('smtp', array(
'host' => 'ssl://smtp.gmail.com',
'port' => '465',
'auth' => true,
'username' => 'johndoe@gmail.com',
'password' => 'passwordxxx'
));
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail)) {
echo('<p>' . $mail->getMessage() . '</p>');
} else {
echo('<p>Message successfully sent!</p>');
}
?>
然而,程序在$mail = $smtp->send($to, $headers, $body);
处失败:
验证失败:johndoe@gmail.com
我已经验证了邮箱和密码是正确的。如果我提供了一个无效的密码,错误将变为
不正确的密码
我也试过在我的帐户上禁用两步认证,但这没有帮助。请告知为什么当凭据看起来正确时,我可能会得到此验证错误?
当您在您或收件人的电子邮件中使用无效字符作为电子邮件别名时,通常会得到"Validation failed for"。
例如:
my_email@gmail.com <first_name.last_name>
my_email@gmail.com <first_name@last_name>
无效字符有:
. (dots)
@ (at)
" (double quotes)
[ (bracket opened without closing)
] (bracket closed without opening)
( (parenthesis opened without closing)
) (parenthesis closed without opening)
我收到了同样的错误。
在试验了这些字段之后,这对我来说很有效:
不是$from = "Sender <sender@example.com>";
试
$from = "sender@example.com";
所以在from字段中只有from电子邮件地址。什么都没有。没有括号。
我承认这不是一个非常优雅的解决方案,但无论如何也是一个解决方案。
当我试图设置mailFrom
与空格和没有电子邮件时,我得到了这个错误:
$this->mailFrom = "Lorem ipsum";'
用电子邮件地址:
$this->mailFrom = "Lorem ipsum <no-reply@test.com>";
即使这是一个迟来的答案,我也会为其他人贴出来。"验证失败:"是针对收件人地址,而不是针对您的凭据。问题是收件人地址的格式错误,Gmail不接受。
//instead of
$to = '<to.yahoo.com>';
//use
$to = 'Recipient Name <myname@example.com>'
//or simple
$to = 'myname@example.com';