Symfony Swiftmailer - 如果凭证中存在特殊字符,AWS SES 凭证将不起作用

jdo*_*dog 2 swiftmailer amazon-web-services symfony amazon-ses

我正在使用 AWS SES 通过 Symfony Swiftmailer 发送电子邮件。这很好用。

我在同一服务器上有第二个应用程序,我想在其中创建第二组凭据以限制风险。IE。我们之前曾泄露过凭据,如果发生这种情况,我只希望 1 个应用程序受到影响。

对于我的第一个应用程序,我的凭据工作正常,但密钥很特殊,因为它只包含字母字符。我的第二组凭据包含“/”和“+”。

我一直在与 AWS 支持人员通话,他们向我展示了我可以使用以下方式发送电子邮件

  openssl s_client -crlf -quiet -starttls smtp -connect email-smtp.ap-southeast-2.amazonaws.com:587 < SMTP.txt
Run Code Online (Sandbox Code Playgroud)

其中 SMTP.txt 包含 base64 编码的凭据(此方法

我需要在 .env 文件中对我的凭据进行编码吗?

nik*_*shr 5

Swift Mailer 上的文档警告您有关特殊字符的信息:

如果用户名、密码或主机包含 URI 中被视为特殊的任何字符(例如 +、@、$、#、/、:、*、!),则必须对它们进行编码。有关保留字符的完整列表, 请参阅RFC 3986或使用urlencode函数对其进行编码。

执行如下命令以获取编码密码

<?php
    $plainpwd = "...Your password...";
    echo urlencode($plainpwd);
?>
Run Code Online (Sandbox Code Playgroud)

并在您的 .env 配置中使用它。例如,

MAILER_URL=smtp://email-smtp.us-east-1.amazonaws.com:587?encryption=tls&username=YOUR_SES_USERNAME&password=YOUR_ENCODED_SES_PASSWORD
Run Code Online (Sandbox Code Playgroud)