我在本地主机上运行了一个定制的Node SMTP-server来帮助发送邮件。但是当我尝试发送邮件时,我收到了以下错误:
在Symfony中:
{
"message": "Warning: stream_socket_enable_crypto(): SSL operation failed with code 1.
OpenSSL Error messages:\nerror:1416F086:SSL
routines:tls_process_server_certificate:certificate verify failed"
}
在我的节点SMTP服务器上:
my-custom-smtp-server |
{
"level":30,
"time":1668095669283,
"pid":7,
"hostname":"1f08bad45913",
"msg":"Got connection from 172.22.0.1"
}
my-custom-smtp-server |
{
"level":50,
"time":1668095669294,
"pid":7,
"hostname":"1f08bad45913",
"msg":"SMTP Error 140413503703424:error:14094418:SSL routines:ssl3_read_bytes:tlsv1 alert
unknown ca:../deps/openssl/openssl/ssl/record/rec_layer_s3.c:1545:SSL alert number 48\n"
}
my-custom-smtp-server |
{
"level":50,
"time":1668095669294,
"pid":7,
"hostname":"1f08bad45913",
"msg":"SMTP Error 140413503703424:error:14094418:SSL routines:ssl3_read_bytes:tlsv1
alert unknown ca:../deps/openssl/openssl/ssl/record/rec_layer_s3.c:1545:SSL
alert number 48\n"}
我能以某种方式绕过此错误吗?
我试图避免在我的小型节点SMTP服务器上设置TLS和SSL。
config/packages/dev/mailer.yaml
的内容:
dsn: 'smtp://mydemo:mysuperpassword@host.docker.internal:2525'
版本和规格
- 麦克
- Symfony 4.4版
尝试的解决方案1:将?verify_peer=false
添加到DSN
我试着将DSN行变成这样(找到了here和这里):
dsn: 'smtp://mydemo:mysuperpassword@host.docker.internal:2525?verify_peer=false'
我也试探着:
dsn: 'smtp://mydemo:mysuperpassword@host.docker.internal:2525?verify_peer=0'
但我得到了同样的错误。
尝试的解决方案2:尝试使用网络设置
我可以在这里读到:[试图访问host.docker.internal导致连接被拒绝](https://github. com/docker/for-win/issues/2402#issuecomment-441059035),它可能是与主机文件的东西。然而,我无法在我的容器内的主机文件中找到任何:docker-compose exec php bash
,然后是vim /etc/hosts
。
不过,那是一个关于“Windows换码头”的帖子。
尝试的解决方案3:尝试通过cURL发送邮件(从容器内部)
我尝试访问我的PHP容器(docker-compose exec php bash
),然后使用以下命令发送邮件:
curl smtp://mydemo:mysuperpassword@host.docker.internal:2525 --mail-from myemail@example.org --mail-rcpt myemail@example.org --upload-file ~/email-example.txt
其中~/email-example.txt
看起来像这样:
From: MyTry <myemail@example.org>
To: destinationaddress@example.org
Subject: Example email
Date: Mon, 7 Nov 2016 08:45:16
Dear Joe,
Welcome to this example email. What a lovely day.
成功了!但遗憾的是,它只是证明了两个容器可以互相访问。而且我的SMTP服务器也能正常工作。它并没有解决我试图通过我的SMTP服务器从Symfony应用程序发送邮件时遇到的错误。
1条答案
按热度按时间vngu2lb81#
解决办法就是按照这里所说的去做:Overriding the EsmtpTransportFactory-class。
对于那些没有Symfony经验的人(像我一样)。
这将在
config/services.yaml
中(在services
-部分中):并创建一个文件:
src/Mailer/EsmtpTransportFactory.php
,并将上述链接中的PHP类放入其中。