当前位置: 首页 > 知识库问答 >
问题:

使用默认模板在laravel中以电子邮件的形式简单联系我们-没有为[mail]错误定义提示路径

太叔航
2023-03-14

我试图创建一个简单的联系我们表单电子邮件,并使用Laravel附带的现有默认电子邮件模板。

在我的表格中,我从用户处收集以下输入:

  • first_name
  • last_name
  • 电子邮件
  • 主题
  • 消息

我使用以下名为SendEmailRequest的FormRequest规则来验证输入:

public function rules()
{
    return [
        'first_name' => ['required', 'string', 'min:3'],
        'last_name' => ['required', 'string', 'min:3'],
        'email' => ['required', 'email'],
        'subject' => ['required', 'in:' . implode(',', config('contact-us-subjects'))],
        'message' => ['required', 'string', 'min:10'],
    ];
}

这是我的控制器上接收请求并尝试发送电子邮件的功能

public function sendEmail(SendEmailRequest $sendEmailRequest)
{
    $validated = $sendEmailRequest->validated();

    $data['slot'] = view('mail.contact-us', $validated)->render();

    Mail::send('vendor.mail.html.message', $data, function($message) use($validated) {
        $message->from($validated['email'], $validated['first_name'] . ' ' . $validated['last_name']);
        $message->subject($validated['subject']);
        $message->to(config('mail.from.address'), config('mail.from.name'));
    });

    return redirect()
        ->back()
        ->with('status', 'Thanks, your email has been successfully sent to us');
}

当我运行这个;我得到以下错误:

Facade\Ignition\Exceptions\ViewException没有为[mail]定义提示路径。(视图:C:\xampp\htdocs\MyApp\src\resources\views\vendor\mail\html\message.blade.php)

我使用Laravel 6. x与PHP 7. x。知道我可能做错了什么吗?

共有1个答案

阎涵容
2023-03-14

我解决这个问题的方式略有不同。我必须以markdown的形式构建可邮寄的邮件。

第一步。使用这个artisan命令创建一个新的mail:php artisan make: mail ConrectUs

第二步。确保在config/mail上设置了默认的(类似于发件人地址/姓名)。php,例如:

'to' => [
    'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
    'name' => env('MAIL_FROM_NAME', 'Example'),
],

第三步。修改app/Mail/ContactUs。php如下所示:

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class ContactUs extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * @var array $data
     */
    private $data;

    /**
     * Create a new message instance.
     *
     * @param array $data
     */
    public function __construct(array $data)
    {
        $this->data = $data;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this
            ->from($this->data['email'], $this->data['first_name'] . ' ' . $this->data['last_name'])
            ->subject($this->data['subject'])
            ->markdown('mail.contact-us', [
                'messageBody' => $this->data['message'],
            ]);
    }
}

第四步。像这样使用新的邮件:

public function sendEmail(SendEmailRequest $sendEmailRequest)
{
    $validated = $sendEmailRequest->validated();

    Mail::send(new ContactUs($validated));

    return redirect()
        ->back()
        ->with('status', 'Thanks, your email has been successfully sent to us');
}

这似乎实现了我最初追求的目标。电子邮件是使用laravel附带的默认模板发送的。

 类似资料:
  • 我试图在视图中显示我的降价电子邮件,但是我的邮件视图有问题,它显示为 还有我的降价邮件视图 我的视图上也有供应商,他们有自己的组件。

  • 单击联系人表单中的“发送”按钮时出错。我使用的是Laravel 5.4。请帮我解决这个错误。 我已经清除了缓存,但仍然得到这个错误 预期响应代码250,但得到代码“530”,消息“530-5.5.1需要身份验证 这是我的邮件功能... 这是我的邮件。php文件

  • 每次尝试提交此联系人表单时,都会收到以下错误消息: “请输入您的消息。” 名称错误消息和电子邮件错误消息不会出现,除非我将它们留空。我尝试在HTML中指定post。 以下是HTML: 下面是PHP:

  • 问题内容: 我想在我正在创建的网站上使用联系表格,但是PHP不是一个选择,因为客户端不希望使用它。是否有一种聪明的方法可以解决此问题,例如发送电子邮件参数(非标准参数)或使用外部联系表?是否有一些不使用广告且可以轻松修改为其他语言的好产品? 谢谢。 问题答案: 联系人表单有数百种可嵌入(最可能基于)的解决方案,使您能够使用PHP等服务器端语言来解决问题。只是一个快速的谷歌搜索会给你一些。 或者,您

  • 发送电子邮件时,页脚中有下面的标准消息。 此电子邮件是使用CakePHP框架发送的,http://cakephp.org. 它似乎使用了这个: 我的控制器里有这个。 创建了以下视图: /应用程序/查看/电子邮件/文本/梦想。ctp /应用程序/视图/布局/电子邮件/文本/梦想。ctp 是否有任何其他设置我错过了cakephp使用我的布局? *注:如果我重新命名我的梦想。ctp默认。ctp它使用那个

  • 我正在研究AWS Cognito,下面是关于消息定制的两个问题。 1) 我正在使用“链接”验证类型为“电子邮件验证消息”编写AWS Cognito。我遇到了一个问题,“电子邮件消息”使其动态。 2)如何根据用户组或有条件地发送不同的“电子邮件消息”内容? 请建议。 谢啦