在 PHP 中向 Amazon SES 发送电子邮件在请求触发时冻结
Sending email to Amazon SES in PHP freezes when triggered by request
无法使用 AWS SesClient 按需发送电子邮件
我正在尝试发送一封电子邮件,要求按需恢复密码。也就是说,我在 API 中收到了一个 http 请求,我通过一个名为 send_email()
.
的函数调用了 sendBulkTemplatedEmail()
事情是这样的:
- 如果我使用
php finename.php
从服务器命令行执行包含先前代码的 php 文件,则电子邮件发送成功。
- 但是,当函数被请求触发时,
sendBulkTemplatedEmailfunction
只是冻结。
send_email($destination_email, $type){
/.../
try {
$SesClient->sendBulkTemplatedEmail($data_to_attach);
$messageId = 1;
echo("Email sent! Message ID: $messageId"."\n");
return true;
} catch (AwsException $e) {
/..../
}
}
我怀疑在每种情况下都使用了不同的用户。
当您从命令行 运行 php
时,它是 运行ning 作为您的登录用户 (ec2-user
?)。但是,当它通过请求触发时,它 运行 宁作为不同的用户(apache
?),并且该用户在其 ~/.aws/credentials
文件中没有凭据。
这可以通过将凭据复制到其他用户的 ~/.aws
目录来解决。
无法使用 AWS SesClient 按需发送电子邮件
我正在尝试发送一封电子邮件,要求按需恢复密码。也就是说,我在 API 中收到了一个 http 请求,我通过一个名为 send_email()
.
事情是这样的:
- 如果我使用
php finename.php
从服务器命令行执行包含先前代码的 php 文件,则电子邮件发送成功。 - 但是,当函数被请求触发时,
sendBulkTemplatedEmailfunction
只是冻结。
send_email($destination_email, $type){
/.../
try {
$SesClient->sendBulkTemplatedEmail($data_to_attach);
$messageId = 1;
echo("Email sent! Message ID: $messageId"."\n");
return true;
} catch (AwsException $e) {
/..../
}
}
我怀疑在每种情况下都使用了不同的用户。
当您从命令行 运行 php
时,它是 运行ning 作为您的登录用户 (ec2-user
?)。但是,当它通过请求触发时,它 运行 宁作为不同的用户(apache
?),并且该用户在其 ~/.aws/credentials
文件中没有凭据。
这可以通过将凭据复制到其他用户的 ~/.aws
目录来解决。