【问题标题】:Why mail laravel not working on the staging server?为什么邮件 laravel 不能在登台服务器上工作?
【发布时间】:2018-05-11 13:33:56
【问题描述】:

我在我的本地主机上尝试,它可以工作

但如果我在登台服务器上尝试,它不起作用

我的控制器是这样的:

<?php
use Illuminate\Support\Facades\Mail;
use App\Mail\OrderReceivedMail;
...
class PurchaseController
{
    ...
    public function test() {
        $order = $this->order_repository->find(416);
        $user = $this->user_repository->find(1);
        Mail::to($user)->send(new OrderReceivedMail($order, $order->store));
    }
}

我的邮件是这样的:

<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class OrderReceivedMail extends Mailable implements ShouldQueue
{
    use Queueable, SerializesModels;
    public $order;
    public $store;
    public function __construct($order, $store)
    {
        $this->order = $order;
        $this->store = $store;
        $this->subject('subject');
    }
    public function build()
    {
        $mail_company = explode(',',config('app.mail_company'));
        // dd($mail_company, $this->order->number, $this->store->name, 'test');
        return $this->view('vendor.notifications.mail.email-order',['number'=>$this->order->number, 'store_name' => $this->store->name])->bcc($mail_company);
    }
}

我尝试添加这个:

dd($mail_company, $this->order->number, $this->store->name, 'test');

在邮件中

如果在我的本地主机中,则显示 dd 的结果

但是如果在staging server中,dd的结果不显示

好像staging server,它没有运行这个语句:

Mail::to($user)->send(new OrderReceivedMail($order, $order->store));

我该如何解决这个问题?

【问题讨论】:

    标签: laravel email laravel-5 laravel-5.3 laravel-mail


    【解决方案1】:

    打开 config/mail.php, .env 文件并将您的电子邮件驱动程序设置为邮件,如下所示,

    'driver' => env('MAIL_DRIVER', 'mail'), //you must set it in env file too
    

    然后你可以像下面这样发送电子邮件,注意 emails.admin.member 是你的电子邮件模板的路径,在示例代码中,laravel 将在路径中查找刀片模板,resources\views\emails\admin\member.blade.php

    Mail::queue('emails.admin.member', $data, function($message) {
            $message->subject("A new Member has been Registered" );
            $message->from('noreply@mydomain.net', 'Your application title');
            $message->to('yourcustomer@yourdomain.com');
        });
    

    Mail::send('emails.admin.member', $data, function($message) {
            $message->subject("A new Member has been Registered" );
            $message->from('noreply@mydomain.net', 'Your application title');
            $message->to('yourcustomer@yourdomain.com');
        });
    

    【讨论】:

    • 我上面的代码在本地主机中工作。但在登台服务器中不起作用
    • 设置驱动,在.env文件中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    相关资源
    最近更新 更多