Как правильно отправлять почту в Laravel? - PullRequest
0 голосов
/ 11 июля 2019

Всякий раз, когда я отправляю почту в Laravel, выдается это сообщение об ошибке:

Адрес в указанном почтовом ящике [] не соответствует RFC 2822, 3.6.2.

Вот мой код:

public function contact_email(Request $request)
{
    $data['name'] = $request->name;
    $data['email'] = $request->email;
    $data['mobile'] = $request->mobile;
    $data['message'] = $request->message;

    Mail::send('email-view', ['data' => $data], function ($message) {
    $message->to(env('MAIL_USERNAME'))->subject('Contact Us Email Notification!!');
    });
    return redirect()->back();
}

В чем причина этой ошибки?

Ответы [ 2 ]

1 голос
/ 11 июля 2019

Пожалуйста, отправьте письмо, как это:

Mail::send('frontend.englishlistening.contact_reply', $data, function($message) use ($toEmail, $toName, $fromEmail, $fromName, $subject){ 

          $message->from($fromEmail, $fromName);
          $message->to($toEmail, $toName);
          $message->subject($subject);
        });

Примечание : Пожалуйста, установите переменную env в любом файле конфигурации и получите это письмо из файла конфигурации.

0 голосов
/ 12 июля 2019

Я думаю, вы могли бы проверить, возвращает ли env ('MAIL_USERNAME') правильный почтовый формат. Кроме того, вы можете добавить метод from. Вы можете сделать это (до Mail :: ...):

dd(env('MAIL_USERNAME'))

Если вы получили ложное значение или нет значение, такое как строка и адрес электронной почты в правильном формате, забудьте об этом!

Вы действительно нуждаетесь в получении данных в виде объекта? Если нет, вам не нужно передавать переменную следующим образом: ['data' => $ data], просто $ data

Обратите внимание, что я не включил здесь env ('MAIL_USERNAME').

 Mail::send('email-view', $data, function ($message) {
     $message->from('thesystem@mail.com', 'the name of your app');
     $message->to('correct@email.com', 'This is a correct format')->subject('Example');
 });

Но если вам нужно передать адрес электронной почты из env ('MAIL_USERNAME') и вы убедились, что env ('MAIL_USERNAME') правильно возвращает адрес электронной почты, почему бы вам не попытаться включить его в de $ переменная данных? как это:

 $data = $request->only('name', 'email', 'mobile', 'message') + ['to' => env('MAIL_USERNAME')];

Или, может быть, вы можете использовать электронную почту из массива:

public function contact_email(Request $request)
{
    $data = $request->only('name', 'email', 'mobile', 'message');

    Mail::send('email-view', $data, function ($message) use ($data) {
        $message->from('thesystem@mail.com', 'the name of your app');
        $message->to($data['email'], $data['name'])->subject('This is a way');
    });
 }

Подсказка для вас: Вам не нужно получать данные из $ request таким способом. Вы можете сделать так:

  $data = $request->only('name', 'email', 'mobile', 'message');

Надеюсь, я смогу вам помочь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...