Laravel 4.2 - Mailgun error "Client error response [url] https://api.mailgun.net/v2/{domain_name}/messages.mime [code status] 400" - PullRequest
0 голосов
/ 07 июня 2019

Начал получать эту ошибку при попытке отправить электронную почту в Laravel 4.2 с помощью Mailgun. Долгое время это работало нормально, и в код не было внесено никаких изменений.

Ошибка: «Ответ клиента об ошибке [url] https://api.mailgun.net/v2/{domain_name}/messages.mime [код состояния] 400 [фраза причины] BAD REQUEST»

конфиг / mail.php

'driver' => 'mailgun',
'host' => 'smtp.mailgun.org',
'port' => 587,
'from' => array('address' => 'info@my-domain.ca', 'name' => 'Domain Portal'),
'encryption' => 'tls',
'username' => 'postmaster@my-domain.ca',
'password' => 'xxxxxxxxx',
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,

конфиг / services.php

'mailgun' => array(
  'domain' => 'my-domain.ca',
  'secret' => 'key-xxxxxxxx',
),

composer.json

"laravel/framework": "4.2.*",
"guzzlehttp/guzzle": "5.0.3",

controller.php

if(isset($email_data['recipient_email']) && $email_data['recipient_email']) {
Mail::send($mailView, $data, function($message) use ($email_data, $attachments)
{
  $message->from($email_data['email_sender_address'], $email_data['email_sender_name'])
    ->to($email_data['recipient_email'], $email_data['recipient_name'])
    ->subject($email_data['subject']);


  if ($email_data['bcc']) {
    $message->bcc($email_data['bcc']);
  }

  if ($attachments) {
    foreach ($attachments as $a) {
      $message->attach($a);
    }
  }

  $message->getHeaders()->addTextHeader('X-Mailgun-Variables', '{"chapter_id": '.$email_data['chapter_id'].'}');
  $message->getHeaders()->addTextHeader('x-mailgun-native-send', true);
});
}

Это действительно странно, кажется, что работает нормально, когда я тестирую его локально, и иногда оно отправляет электронные письма, но в других случаях я просто получаю сообщение об ошибке.

1 Ответ

0 голосов
/ 08 июня 2019

Оказывается, проблема в том, что имя-получателя содержало некоторые специальные символы, и это нарушало почтовый запрос. Я решил это, не указав имя_пользователя и вместо этого просто отправив его прямо на свою электронную почту.

...