【问题标题】:How to send an email in Laravel using the mail class? Can't get the sender email address如何使用邮件类在 Laravel 中发送电子邮件?无法获取发件人电子邮件地址
【发布时间】:2020-09-25 23:22:27
【问题描述】:

我正在创建一个联系表单,我想从 request() 检索发件人电子邮件地址,但是当我填写联系表单并发送时遇到了一些问题,电子邮件没有出现在 mailtrap 中正确配置。我设法通过Mail::to('test@test.com')->send(new ContactFormMail($data)); 向收件人发送电子邮件来使其正常工作,但我想获取发件人的电子邮件地址。

我尝试这样做,但没有发生任何错误或电子邮件,并且数据正确输出到数组中。所以我有点困惑。

    public function store(){
        $data = request()->validate([
            'name' => 'required',
            'email' => 'required|email',
            'number' => 'sometimes|nullable',
            'message' => 'required',
        ]);

        Mail::send(new ContactFormMail($data), ['data' => $data],
            function ($message) use ($data)
            {
                $message
                    ->from($data['email'])
                    ->to('test@test.com');
            });

        return redirect('contact-us')->with('message', 'Thanks for your message. We\'ll be in touch.');
    }

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    尝试:

    public function build()
    {
        return $this->from($this->data['email'])
                    ->view('emails.your-email-view');
    }
    

    https://laravel.com/docs/7.x/mail#configuring-the-sender

    我希望这会有所帮助。

    更新: 既然你有No hint path defined for [mail],那么问题一定是这是一个降价,你必须调用->markdown('path-to-template'),而不是->view

    这是stackoverflow上的一个常见问题:No hint path defined for [mail] Laravel 5.4

    【讨论】:

    • 我想使用 $data['email'] 作为发件人电子邮件地址,我尝试这样做 Mail::to('test@test.com')->send(new ContactFormMail($data))->from($data['email']);,但在 null 上调用成员函数 from()
    • 这发生在您的邮件中。在您的情况下是 ContactFormMail。我已经更新了我的答案。
    • 我尝试实施该解决方案,但不幸的是它对我不起作用
    • 你能告诉我 ContactFormMail 类吗?你怎么称呼它?
    • 这是我的构建函数 ` public function build() { // return $this->markdown('emails.contact.contact-form'); return $this->from($this->data['email']) ->view('emails.contact.contact-form'); } ` 当我提交没有为 [mail] 定义提示路径时,我怎么会收到错误。
    【解决方案2】:

    这是我用来检索发件人电子邮件的解决方案。 Mail::send('Frontend::emails.contact.contact-form', ['data' => $data], function ($message) use ($data) { $message ->from($data['email']) ->to('test@test.com'); });

    但是这导致了另一个问题没有为 [mail] 定义提示路径。此问题与电子邮件刀片中的 @component('mail::message') 有关,因此请将其删除并将电子邮件刀片更改为 html,您可以从 mailtrap 中的 html 源中复制它。基本上将降价视为 HTML,因为它试图引用降价类。

    【讨论】:

      猜你喜欢
      • 2016-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-25
      • 1970-01-01
      • 2012-06-24
      • 2014-09-22
      • 1970-01-01
      相关资源
      最近更新 更多