首页 > 解决方案 > sendmail Laravel 不发送电子邮件

问题描述

我编写了以下代码,使用 Laravel 控制器方法向指定的电子邮件地址发送电子邮件:

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

如果我在本地主机上运行此代码,它会向指定的地址发送邮件,如果我在我的子域上运行它,它不会在不发送任何错误消息的情况下发送电子邮件。

标签: phplaravelsendmail

解决方案


在您的控制器顶部

 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

推荐阅读