sendmail在Laravel中无法发送电子邮件

3

我编写了以下代码,使用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

如果我在本地主机上运行此代码,它会将邮件发送到指定的地址,但如果我在子域上运行它,则不会发送电子邮件,也不会显示任何错误消息。


请尝试将MAIL_PORT=587 - kapitan
2个回答

0

在你的控制器顶部

 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

-1

可能您的主机上没有安装sendmail。我建议使用MailGun。它与Laravel一起构建,并且可以免费使用。无论是在本地主机还是在线服务器上,它都应该能够无缝运行。


仍无法发送电子邮件,即使使用MailGun,页面仍为空白。 - Sander bakker
这是一个空白页面,因为您的sendMail没有返回任何视图。请确保将您的电子邮件添加到MailGun中的沙箱电子邮件中。否则,除非您在Mailgun上设置了自己的域名,否则MailGun不会发送电子邮件。另一个选择是使用MailTrap进行测试。 - Michael Nguyen
作者询问如何使用sendmail。推荐替代服务无法解决他现有的sendmail问题。 - YanDatsiuk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接