Phpmailer错误:无法进行身份验证

时间:2018-06-03 21:36:43

标签: php email smtp gmail phpmailer

我知道有很多类似的问题,我已经全部阅读过,在评论中尝试了所有内容。仍然无法工作。

我已为此项目创建了gmail帐户,并从一开始就设置了不太安全的应用程序使用配置。 如果有人能给我任何想法,我已经做了很多事情,我已经试图解决这个问题好几个月。

这是输出:

  

" 2018-06-03 21:03:33服务器 - >客户:   2018-06-03 21:03:33 SMTP注意:检查连接时是否捕获了EOF   SMTP错误:无法进行身份验证。   SMTP错误:无法进行身份验证。   消息尚未发送。邮件程序错误:SMTP错误:无法进行身份验证。> "

这是我的send.php代码:

using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;

namespace image
{
    class Program
    {
        static async Task Main(string[] args)
        {
            var bytes = File.ReadAllBytes("/tmp/sample.jpg");
            var base64 = Convert.ToBase64String(bytes);
            var secretKey = "my_key";
            var url = $"http://yoururl.com?my_key={secretKey}";

            using(var client = new HttpClient())
            {
                var content = new StringContent(base64);
                var response = await client.PostAsync(url, content);
                var stringResponse = await response.Content.ReadAsStringAsync();

                Console.WriteLine(stringResponse);
            }
        }
    }
}

编辑:我已经尝试了Abdulla和Glass所说的,取消了2步验证并通过端口587和调试3更改为tsl并获得此输出:

  

2018-06-03 22:03:55连接:打开到smtp.gmail.com:587,timeout = 300,options = array()   2018-06-03 22:03:55连接:打开   2018-06-03 22:03:55服务器 - >客户:220 smtp.gmail.com ESMTP u74-v6sm3867212qku.55 - gsmtp   2018-06-03 22:03:55客户 - >服务器:EHLO localhost   2018-06-03 22:03:55服务器 - >客户:250-smtp.gmail.com为您服务,[190.2.100.71] 250-SIZE 35882577250-8BITMIME250-STARTTLS250-ENHANCEDSTATUSCODES250-PIPELINING250 SMTPUTF8   2018-06-03 22:03:55客户 - >服务器:STARTTLS   2018-06-03 22:03:56服务器 - >客户端:220 2.0.0准备启动TLS   2018-06-03 22:03:56连接失败。错误#2:stream_socket_enable_crypto():SSL操作失败,代码为1. OpenSSL错误消息:错误:14090086:SSL例程:ssl3_get_server_certificate:证书验证失败[H:\ xampp \ htdocs \ mati \ PHPMailer \ src \ SMTP.php第406行]   SMTP错误:无法连接到SMTP主机。   2018-06-03 22:03:56客户 - >服务器:退出   2018-06-03 22:03:56服务器 - >客户:   2018-06-03 22:03:56 SMTP错误:QUIT命令失败:   2018-06-03 22:03:56连接:关闭   SMTP错误:无法连接到SMTP主机。   El mensaje no ha sido enviado。邮件程序错误:SMTP错误:无法连接到SMTP主机。

Edit2:它已经解决了,我已经上传到使用tsl身份验证的临时服务器并且工作得很好。我非常感谢你@ abdulla-nilam和@ mr-glass的贡献。 它最终发送了消息,谢谢。它起初并没有从我的localhost工作,但在provissional服务器工作正常。

1 个答案:

答案 0 :(得分:0)

我想你应该试试这个:

$mail = new \PHPMailer(true); 
$mail->CharSet = 'UTF-8'; $mail->isHTML(); 
$mail->Host = ...//my config 
$mail->Port = ...//my port $mail->isSMTP(); 
if (version_compare(PHP_VERSION, '5.6.0') >= 0){ 
$mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true, ), );
 }