提问人:Elikill58 提问时间:3/24/2023 更新时间:3/25/2023 访问量:210
如何将代理添加到symfony邮件中?
How to add a proxy to a symfony mailer?
问:
我正在使用 symfony。我想发送邮件。在开发模式下,我使用的是工作正常的特定 SMTP 服务器,但在生产环境中:我有一个没有身份验证的 SMTP 服务器,需要代理才能使用。
我的代码是:
$mailer->send((new Email())->from("[email protected]")
->to("[email protected]")
->subject("Subject")
->html("Here is my content"));
在我的 I 中,其值是 ..env
MAILER_DSN
smtp://from%40my-email.com:@smtp.my-email.com:25
我收到此错误:
Expected response code "220" but got code "554", with message "554 5.7.1 <unknown[1.2.3.4]>: Client host rejected: Access denied".
我搜索了如何添加代理,但symfony文档只是关于cloudflare客户端之类的反向代理(这里我想要一些服务器端的东西)。
如何添加代理来修复它?
答:
0赞
vodevel
3/25/2023
#1
我自己没有做过,但我猜的方式如下:
- 使用 with config like default 或 scopeping 客户端:
symfony/http-client
#framework.yaml
framework:
http_client:
proxy:
host: YOUR_HOST
port: YOUR_PORT
- 使用 DSN 创建自己的传输实例(如 smtp-proxy)并设置 proxy-client:
# in __constructor of custom Transport
$httpClient = new NativeHttpClient();
$this->setClient($httpClient);
/*
#And other settings if needed:
$this
->setUsername('your_username')
->setPassword('your_password')
->setStreamOptions([
'ssl' => [
'allow_self_signed' => true,
'verify_peer' => false,
],
])
->setLocalDomain('[127.0.0.1]')
*/
- 在 [dev] .env 中设置MAILER_DSN,例如
smtp-proxy://...
因此,代码不会改变,只是在其中使用带有代理 http-client 的传输实例。$mailer->send((new Email())...
评论
0赞
Elikill58
3/27/2023
给定的 yaml 配置似乎在 symfony 6.2 上创建了错误。我用了.然后,它说“不支持 smtp-proxy 方案”。由于我不知道我在哪里添加了我的“自己的交通工具”(所以没有添加),它可以相关吗?http_client: default_options: proxy: '%env(PROXY_URL)%:%env(PROXY_PORT)%'
0赞
vodevel
3/28/2023
以下是有关如何创建自己的传输的第三方示例。不幸的是,我没有代理服务器来创建用于设置它的完全有效的指令。但主要思想是为传输实例安装代理客户端,而不是为邮件程序安装代理客户端。也许,除了symfony/http-client之外,还有一些其他的客户端库,借助它们,创建代理客户端会更容易。
评论