Внутренняя ошибка сервера 500 при отправке почты в AWS SES с запущенным cakephp на Hiawatha

Я получаю сообщение «Внутренняя ошибка сервера 500» после третьей, а иногда и с первой попытки отправки почты с использованием CakePHP 3 через учетную запись AWS SES (в производственном режиме), запущенную на сервере Hiawatha.

Вот мой PHP-код:

  public function sendmail()
{
$email = new Email();
$email->transport('SES');
try {
$res = $email->from(['[email protected]' => 'Name'])
->to(['[email protected]' => 'Receiver'])
->subject('Test mail')
->send('some text');
} catch (Exception $e) {
$this->Flash->error('Error. Please, try again.');
echo 'Exception : ',  $e->getMessage(), "\n";
return $this->redirect('/');
}
$this->Flash->success('Ok. You will receive a confirmation mail');
return $this->redirect('/');}

Вот транспортная конфигурация

     'EmailTransport' => [
'SES' => [
'host' => 'email-smtp.eu-west-1.amazonaws.com',
'port' => 25,
'timeout' => 60,
'username' => 'ASDFASADQWE',
'password' => 'FSDFDSFDSFSEREWRWERWER',
'tls' => true,
'className' => 'Smtp'
],

порты 465 и 587 не работают с первой попытки

Таким образом, в основном я не могу определить, возникла ли проблема в CakePHP, AWS SES или какой-либо конфигурации на сервере.

Спасибо за любую рекомендацию.

0

Решение

В конце я прекращаю использовать почту cakePHP и настраиваю PHPMailer, некоторые трудности в использовании составляют и запускают его, однако в конце это рабочий код, который я могу отправлять много писем подряд.

   public function sendMailPHPMailer()
{
$mail = new \PHPMailer();
$mail->isSMTP();
$mail->Host = 'email-smtp.eu-west-1.amazonaws.com';
$mail->SMTPAuth = true;
$mail->Username = 'username';
$mail->Password = 'password';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->From = '[email protected]';
$mail->FromName = 'cakePHP PHPMailer';
$mail->addAddress('[email protected]', 'receiver');
$mail->isHTML(true);
$mail->Subject = 'Test using PHPMailer & SES';
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text';

if(!$mail->send()) {
$this->Flash->error('error');
echo 'Exception : ',  $mail->ErrorInfo, "\n";
return $this->redirect('/');
}else{
$this->Flash->success('ok');
return $this->redirect('/');
}
}

И с этим кодом я могу отправить только 3 письма с интервалом 1 с, после чего я получаю ошибку 500.

    public function sendmail()
{
$email = new Email();
$email->transport('SES');
try {
$res = $email->from(['[email protected]' => 'cakePHP mail'])
->to(['[email protected]' => 'receiver'])
->subject('cakePHP & SES')
->send('message via cakePHP and SES');
} catch (Exception $e) {
$this->Flash->error('error');
echo 'Exception : ',  $e->getMessage(), "\n";
return $this->redirect('/');
}
$this->Flash->success('ok');
return $this->redirect('/');
}
0

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

Других решений пока нет …

По вопросам рекламы [email protected]