sendmail Laravel не отправляет электронную почту - PullRequest
1 голос
/ 22 апреля 2019

Я написал следующий код для отправки электронного письма на указанный адрес электронной почты, используя метод Laravel Controller:

public function sendEmail(Request $request){
        $question = $request->get('question');
        $phone = $request->get('phone');

        $from_email = $request->get('email');
        $from_name = $request->get('name');

        $to_email = 'XXX';
        $to_name = 'XXX';

        $data = array('name'=>"Sam Jose", "body" => $question . "\n" . $phone);

        Mail::send(array(), $data, function($message) use ($to_name, $to_email, $from_email, $from_name) {
            $message->to($to_email, $to_name)
                ->subject('Vraag | XXX');
            $message->from($from_email, $from_name);
        });
    }

Кроме того, я добавил следующий текст в мой файл .env:

MAIL_DRIVER=sendmail
MAIL_HOST=smtp.googlemail.com
MAIL_PORT=465
MAIL_USERNAME=XXX
MAIL_PASSWORD=XXX
MAIL_ENCRYPTION=ssl

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

Ответы [ 2 ]

0 голосов
/ 23 апреля 2019

В верхней части вашего контроллера

 use Mail;

используйте этот код в функции контроллера для отправки почты. Mail.welcome - это почтовое тело, которое вы отправляете.

$data=array('body'=>$message,'name'=>'XXXXX');
Mail::send('mail.welcome',$data,function ($message)use ($email,$subject)
{
$message->to($email)->from('XXXXX@gmail.com', 'XXXX')->subject($subject);
}); 
if(count(Mail::failures()) > 0){
return redirect()->route('mail.view')->with('error','Error in sending mail');
}
else {
return redirect()->route('mail.view')->with('response','Mail Send Successfully');
}

Если вы используете gmail для отправки почты. Измените файл .env

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=xxxxxxx@gmail.com
MAIL_PASSWORD=xxxxxxxxxxx
MAIL_ENCRYPTION=tls
0 голосов
/ 22 апреля 2019

возможно у вас не установлен sendmail на вашем хостинге. Я бы порекомендовал использовать MailGun . Он встроен в Laravel и бесплатен для использования. Он должен работать без проблем на локальном или живом сервере.

...