<?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
我已经确认电子邮件和密码是正确的。如果我提供的密码无效,则错误将更改为
密码错误
我还尝试在我的帐户上禁用两步验证,但这没有帮助。如果证书看起来正确,请告知我为什么会收到此验证错误?
答案 0 :(得分:1)
通常你得到&#34;验证失败&#34;在您或收件人的电子邮件中使用无效字符作为电子邮件别名时。
例如:
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)
答案 1 :(得分:0)
我收到了同样的错误。
在尝试使用这些字段后,这对我有用:
而不是
$from = "Sender <sender@example.com>";
尝试
$from = "sender@example.com";
所以你只有来自from字段的来自电子邮件地址。没有其他的。没有括号。
我承认,这不是一个非常优雅的解决方案,但仍然是一种解决方案。
答案 2 :(得分:0)
当我尝试设置mailFrom
有空格且没有电子邮件时,出现了此错误:
$this->mailFrom = "Lorem ipsum";'
只需使用电子邮件地址进行更改:
$this->mailFrom = "Lorem ipsum <no-reply@test.com>";
答案 3 :(得分:-1)
即使是迟到的回答,我也会将此发布给其他人。 &#34;验证失败:&#34;用于不是您的凭据的接收方地址。 问题是收件人地址格式错误,Gmail不接受。
//instead of
$to = '<to.yahoo.com>';
//use
$to = 'Recipient Name <myname@example.com>'
//or simple
$to = 'myname@example.com';