我知道有很多类似的问题,我已经全部阅读过,在评论中尝试了所有内容。仍然无法工作。
我已为此项目创建了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服务器工作正常。
答案 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, ), );
}