我正在进行一个项目,需要向我的客户发送事务电子邮件。
发送请求时出现以下错误。我使用SendinBlue V3 SDK。
Exception when calling TransactionalEmailsApi->sendTransacEmail: Connection refused for URI
https://api.sendinblue.com/v3/smtp/email
我的方法代码:
$config = Configuration::getDefaultConfiguration()->setApiKey('api-key', 'secret');
$apiInstance = new TransactionalEmailsApi(
new GuzzleHttpClient([
'base_uri' => 'https://[secret].online'
]),
$config
);
$sendSmtpEmail = new SendSmtpEmail();
$sendSmtpEmail['to'] = [
[
'email' => $parameters['mail'],
'name' => $parameters['user'],
]
];
$sendSmtpEmail['templateId'] = 3;
$sendSmtpEmail['params'] = [
'FIRSTNAME' => $parameters['user'],
'LASTNAME' => $parameters['verification_code'],
];
try {
$result = $apiInstance->sendTransacEmail($sendSmtpEmail);
print_r($result);
} catch (ConnectException $e) {
echo 'Exception when calling TransactionalEmailsApi->sendTransacEmail: ', $e->getMessage(), PHP_EOL;
}
您是否使用Guzzle正确配置了https客户端?如果没有连接,则可以检查是否引发了任何其他异常。您在Guzzle文档中有一个很好的清单:https://docs.guzzlephp.org/en/stable/quickstart.html#exceptions
. RuntimeException
└── TransferException (implements GuzzleException)
├── ConnectException (implements NetworkExceptionInterface)
└── RequestException
├── BadResponseException
│ ├── ServerException
│ └── ClientException
└── TooManyRedirectsException
在您的情况下,它是ConnectException
。尝试获取更多信息。
为什么ConnectException
通常被抛出?当您无法连接时。
什么时候不能连接?当您没有使用正确的端点url时,没有将HTTP客户端配置为使用HTTPS协议,也没有根据官方文档中的规范使用端点。
您也可以查看官方教程:https://developers.sendinblue.com/docs/send-a-transactional-email
您也可以使用github.com sendinblue官方存储库,并使用描述良好的phpapi:https://github.com/sendinblue/APIv3-php-library
文档中说:中继访问被拒绝身份验证可能失败:请检查您的API密钥、
还请确保您的587端口已打开。
运行php artisan cache:clear
和php artisan config:clear