Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Email 发送电子邮件时PEAR邮件身份验证失败_Email_Smtp_Pear_Php - Fatal编程技术网

Email 发送电子邮件时PEAR邮件身份验证失败

Email 发送电子邮件时PEAR邮件身份验证失败,email,smtp,pear,php,Email,Smtp,Pear,Php,因为我发现PHP中的内置邮件函数存在安全漏洞,所以我尝试使用PEAR。我已经在本地主机(WAMP服务器2.2)上安装并进行了必要的配置。但是,每次我尝试发送电子邮件时,都会显示以下消息 错误:身份验证失败[SMTP:从服务器接收到无效的响应代码(代码:535,响应:5.7.8用户名和密码不被接受。在5.7.8了解更多信息http://support.google.com/mail/bin/answer.py?answer=14257 gg10sm16772067pbc.46-gsmtp)] 用户

因为我发现PHP中的内置邮件函数存在安全漏洞,所以我尝试使用PEAR。我已经在本地主机(WAMP服务器2.2)上安装并进行了必要的配置。但是,每次我尝试发送电子邮件时,都会显示以下消息

错误:身份验证失败[SMTP:从服务器接收到无效的响应代码(代码:535,响应:5.7.8用户名和密码不被接受。在5.7.8了解更多信息http://support.google.com/mail/bin/answer.py?answer=14257 gg10sm16772067pbc.46-gsmtp)]

用户名和密码都是正确的,我已经检查了一遍又一遍。我已经查看了其他成员的在线文档和类似问题,但我仍然无法解决这个问题。对这个问题的任何见解都将不胜感激。顺便说一下,这是我用来发送电子邮件的PHP代码

    <?php
            require "Mail.php";
            $from   = "myemail@here.com";
            $to     = "mysender@here.com";
            $subject= "hiii";
            $body =     "\n\nEmail contents here";

            $host   = "ssl://smtp.gmail.com";//"smtp.gmail.com";
            $port   = "465";//"587";
            $user   = "my username";
            $pass   = "mypassword";
            $headers = array("From"=> $from, "To"=>$to, "Subject"=>$subject);
            $smtp   = @Mail::factory("smtp", array("host"=>$host, "port"=>$port, "auth"=> true, "username"=>$user, "password"=>$pass));
            $mail   = @$smtp->send($to, $headers, $body);

            if(PEAR::isError($mail)){
                echo "error: {$mail->getMessage()}";
            }else{
                echo "Message sent";
            }
     ?>

用于创建SMTP对象的用户名必须是您的完整gmail电子邮件地址,例如fred。flintstone@gmail.com主机变量应该是“smtp.gmail.com”-它不需要以“ssl://”开头

这将导致发送一封没有问题的电子邮件。(我将您的代码放入一个名为20031009.php的文件中,修复了错误,做了一些其他更改,以便它可以与我的gmail帐户一起工作,并运行了它,结果如下。)

另一方面,您似乎需要交换$from和$to的值。:)

这是完整的工作代码(帐户和电子邮件详细信息已更改)

谢谢。。我已经尝试了好几天了&我尝试了很多组合,但用户名总是我的gmail屏幕名。。
$ php 20031009.php 
Message sent
    require "Mail.php";
    $to      = "mysender@here.com";
    $from    = "myemail@here.com"; // the email address
    $subject = "hiii";
    $body    = "\n\nEmail contents here";

    $host    = "smtp.gmail.com";
    $port    =  "587";
    $user    = "my username";
    $pass    = "mypassword";
    $headers = array("From"=> $from, "To"=>$to, "Subject"=>$subject);
    $smtp    = @Mail::factory("smtp", array("host"=>$host, "port"=>$port, "auth"=> true, "username"=>$user, "password"=>$pass));
    $mail    = @$smtp->send($to, $headers, $body);

    if (PEAR::isError($mail)){
        echo "error: {$mail->getMessage()}";
    } else {
        echo "Message sent";
    }