sendmail Laravel不发送电子邮件

时间:2019-04-22 18:53:12

标签: php laravel sendmail

我编写了以下代码,以使用Laravel Controller方法将电子邮件发送到指定的电子邮件地址:

public BigDecimal chudnovskyNumber(int k, MathContext context) {

        Callable<BigDecimal> f1 = () -> factorial(6 * k);
        Callable<BigDecimal> f2 = () -> factorial(3 * k);
        Callable<BigDecimal> f3 = () -> factorial(k);

        Callable<BigDecimal> mul1 = () -> BigDecimal.valueOf(545140134).multiply(BigDecimal.valueOf(k));

        Callable<BigDecimal> pow1 = () -> BigDecimal.valueOf(-262537412640768000L).pow(k);

        Supplier<BigDecimal> f1Supplier = executeCalculation(f1);
        Supplier<BigDecimal> f2Supplier = executeCalculation(f2);
        Supplier<BigDecimal> f3Supplier = executeCalculation(f3);
        Supplier<BigDecimal> m1Supplier = executeCalculation(mul1);
        Supplier<BigDecimal> pow1Supplier = executeCalculation(pow1);

        Callable<BigDecimal> m2 = () -> f1Supplier.get().multiply(m1Supplier.get());
        Callable<BigDecimal> pow2 = () -> f3Supplier.get().pow(3);

        Supplier<BigDecimal> m2Supplier = executeCalculation(m2);
        Supplier<BigDecimal> pow2Supplier = executeCalculation(pow2);

        Callable<BigDecimal> addition1 = () -> m2Supplier.get().add(BigDecimal.valueOf(13591409));
        Callable<BigDecimal> m3 = () -> f2Supplier.get().multiply(pow2Supplier.get());

        Supplier<BigDecimal> addition1Supplier = executeCalculation(addition1);
        Supplier<BigDecimal> m3Supplier = executeCalculation(m3);

        Callable<BigDecimal> m4 = () -> m3Supplier.get().multiply(pow1Supplier.get());
        Supplier<BigDecimal> m4Supplier = executeCalculation(m4);

        Supplier<BigDecimal> resultSupplier = () -> addition1Supplier.get().divide(m4Supplier.get(), context).stripTrailingZeros();
        return resultSupplier.get();
    }

此外,我还在.env文件中添加了以下内容:

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);
        });
    }

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

2 个答案:

答案 0 :(得分:0)

可能您的主机上未安装sendmail。我建议使用MailGun。它是Laravel内置的,可以免费使用。它应该在本地主机或实时服务器上无缝运行。

答案 1 :(得分: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