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

Laravel 5.4邮件,传递数据

孟树
2023-03-14

我正试图用Laravel 5.4中的一个简单的联系方式给自己发送一封电子邮件。

我的表格是4输入:Nom,prenom,电子邮件和消息。我只想在我的邮件模板中发送一封带有数据的电子邮件

这是我的控制器:

$this->validate($request, [
    'nom' => 'required|alpha',
    'prenom' => 'required|alpha',
    'email' => 'required|email',
    'message' => 'required',
    ]);

    $data = [
      'nom' => $request->nom,
      'prenom' => $request->prenom,
      'email' => $request->email,
      'message' => $request->message,
    ];

    Mail::to('myadress')->send(new Contact($data));

这是我的“联系”邮件:

public $data;

public function __construct($data)
{
    $this->nom = $data['nom'];
    $this->prenom = $data['prenom'];
    $this->email = $data['email'];
    $this->message = $data['message'];
}

/**
 * Build the message.
 *
 * @return $this
 */
public function build()
{
    return $this->view('emails.hello')->with([
                'nom' => $this->nom,
                'prenom' => $this->prenom,
                'email' => $this->email,
                'message' => $this->message,
            ]);
}

这是我的邮件模板:

<!DOCTYPE html>
<html lang="en-US">
<head>
    <meta charset="utf-8">
</head>
<body>
<h2>Demande d'informations </h2>

<div>
    <p>
      Vous recevez ce mail via le formulaire de contact du site .
    </p>
    <p>
      Adresse mail du contact: {{ $email }}
    </p>
    <p>
      Nom: {{ $nom }} / Prénom: {{ $prenom }}
    </p>
    <h3>Message du contact:</h3>
    <p>
      {{ $message }}
    </p>
</div>

</body>
</html>

我得到一个错误消息说我不能传递一个对象作为字符串。谢谢你的帮助,这是我第一次使用Laravel Mail

共有2个答案

鲁向明
2023-03-14

以下是在Laravel 5.8中向您的电子邮件模板传递数据的解决方案(我认为也适用于5.5/5.6/5.7)

这是我的控制器:


    <?php  
    namespace App\Http\Controllers;

    use App\Mail\ClientMail;    
    use Illuminate\Http\Request;    
    use Illuminate\Support\Facades\Mail;    
    use App\Http\Requests\SendClientMail; 

    class  ClientContactController  extends  Controller

    {

        public  function  index()

        {

            return  view('client_contact');

        }



        public  function  send(SendClientMail  $request)

        {

            Mail::to("myemailaddress@agency.com")->send(new  ClientMail($request));         
            return  redirect()->route('client-contact')->with('flash-message', 'Your email has been sent! Thank you!');

        }

    }

接下来是我的客户邮件。php文件(app/Mail/ClientMail.php)


    <?php

    namespace App\Mail;

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


    class  ClientMail  extends  Mailable

    {

        use  Queueable, SerializesModels;

        // array with all your data
        protected  $infos;



        /**

        * Create a new message instance.

        *

        * @return  void

        */

        public  function  __construct($infos)

        {

            $this->infos  =  $infos;

        }



        /**

        * Build the message.

        *

        * @return $this

        */

        public  function  build()

        {

            return  $this->from('sendingemail@mywebsite.com')

            ->view('emails.client') // this is your email template in "view" directory

            ->with([

            'name'  =>  $this->infos['name'],

            'email'  =>  $this->infos['email'],

            ]);

        }

    }

然后,您就有了电子邮件模板(参考资料/视图/电子邮件/client.blade.php)


    @if($name)

    <p>Name: {{  $name  }}</p>

    @endif



    @if($email)

    <p>Email: {{  $email  }}</p>

    @endif

我希望这对你有帮助。

刁丰羽
2023-03-14

因此,我发现了我的问题:

public function __construct($data) {
    $this->data = $data;
}

然后:

public function build() {
    return $this->from('mailadress@blabla', 'my site')
    ->subject('hello you')
    ->view('emails.hello')->with(['data', $this->data]);
}

在我的刀片文件中:

Adresse mail du contact: {{ $data['email'] }}

只是因为我试图在视图中将数组显示为对象。。。

所以我的坏!

 类似资料:
  • 我正在尝试使用Laravel默认邮件外观发送电子邮件:- 在Mail\NotifyUserExpiring中:- 在网络上。邮政NotifyUserExpiring视图文件我正在使用刀片打印方式变量:- 当我检查我的邮件收件箱时,我收到了一封带有{{$user的电子邮件- 你好{{$user-

  • 2FE552B7-53B1-4E4A-AFFF-3AEF8FE9D05B-----WebKitFormBoundaryLH8FJWGYEEVTCJMA内容-配置:表单-数据;name=“sample test file.pdf”;filename=“sample test file.pdf”content-type:application/pdf

  • 我正在使用向mailtrap发送邮件,并传递变量。 我的问题是它不能识别我在降价中传递的变量。它在下面返回一个错误 Facade\Ignition\Exceptions\ViewException:未定义变量:email(视图:/var/www/resources/views/ema。。。 有人知道什么是传递和获取变量的正确方法? 这是我的密码 这是我的降价看起来很像

  • 我想上传一个图像文件。当我调用我的API上传文件使用postman,得到的错误,如. 我无法将此文件发布到我的Laravel控制器。如何在Laravel中发布文件。有人能帮我解决这个问题吗? 这是我的控制器功能, 在这一行

  • 我的主要目标是使用Microsoft Graph API将。pptx/.docx/.pdf文件上传到Microsoft Sharepoint。我可以使用下面的“PUT”请求上传到简单的文本文件,其中的内容类型是多部分/表单数据 ---------------------------------404518839734975569926100内容-处理:表单-数据;name=“文件”;filenam

  • 您可以将其他数据作为常规方法参数传递到后台任务。我再次使用下面的例子(希望没有让你厌恶): BackgroundJob.Enqueue(() => Console.WriteLine("Hello, {0}!", "world")); 在常规方法调用中,在执行后台作业期间, Console.WriteLine 方法将使用这些参数。为了参数传递进去,需要先序列化。 使用 了不起的 Newtonsof