Ошибка отправки AWS SES при отправке электронной почты

Я настроил сервис AWS Ses с помощью PHP SDK:

$this->client = SesClient::factory([
'key' => $params['key'],
'secretKey' => $params['secret_key'],
'region' => 'eu-west-1',
'base_url' => 'https://email-smtp.eu-west-1.amazonaws.com',
]);

$this->client->sendEmail($this->params());

public function params() {
array(
'Source' => 'verified@gmail.com',
'Destination' => array(
'ToAddresses' => array('receiver@yahoo.com')
),
'Message' => array(
'Subject' => array(
'Data' => 'SES Testing',
'Charset' => 'UTF-8',
),
// Body is required
'Body' => array(
'Text' => array(
'Data' => 'My plain text email',
'Charset' => 'UTF-8',
),
'Html' => array(
'Data' => '<b>My HTML Email</b>',
'Charset' => 'UTF-8',
),
),
),
'ReplyToAddresses' => array( 'replyTo@email.com' ),
'ReturnPath' => 'bounce@email.com'
);
}

После попытки отправить письмо я получаю это сообщение об ошибке:

exception 'Guzzle\Http\Exception\CurlException' with message
'[curl] 23: Failed writing body (0 != 86) [url] https://email-smtp.eu-west-1.amazonaws.com/'
in C:\xampp\htdocs\myProject\protected\lib\vendor\guzzle\guzzle\src\Guzzle\Http\Curl\CurlMulti.php:338

Кто-нибудь знает, как исправить эту ошибку?

У cUrl есть поддержка SMTP, но smtp://email-smtp.eu-west-1.amazonaws.com выдает ошибку [curl] 1: Protocol smtp not supported or disabled in libcurl [url] smtp://email-smtp.eu-west-1.amazonaws.com/
завивать

0

Решение

Вы не используете действительную конечную точку.

email-smtp.eu-west-1.amazonaws.com является конечной точкой SMTP, а не HTTPS. Конечная точка HTTPS email.eu-west-1.amazonaws.com,

http://docs.aws.amazon.com/general/latest/gr/rande.html#ses_region

0

Другие решения

  1. использование https://email.{$region}.amazonaws.com как base_url
    На этом этапе я получаю сообщение об ошибке: «Пользователь» arn: aws: iam :: ######: user / ebpush ‘не авторизован для выполнения’ ses: SendEmail ‘на ресурсе `arn: aws: ses: eu- запад-1: 447362101282: identity/verified@gmail.com»
  2. добавлять Я > группы > Создать группу > AmazonSESFullAccess
  3. Идти к Я > полисы > AmazonSESFullAccess > Прикреплять > ebPush

ИЛИ ЖЕ

Используйте PHPMailer для подключения через email-smtp.{region}.amazonaws.com где логин — это ваш ключ доступа к SES, а пароль — ваш секретный ключ SES.

0

Вам не нужно явно указывать base_url / endpoint в AWS SDK для PHP. Установка региона обеспечит правильное использование конечной точки.

0