【问题标题】:send mail in laravel 5.4 with request input使用请求输入在 laravel 5.4 中发送邮件
【发布时间】:2017-07-16 20:06:52
【问题描述】:

我有一个包含姓名、电子邮件、电话等字段的联系表单。我想将这些字段传递到发送的电子邮件中,我在下面尝试的示例似乎没有将变量发送到正在发送的 html 电子邮件。

这是在此页面的 Route::post 中:

$数据 = [ 'name' => $request->input('name'), 'email' => $request->input('email'), '电话' => $request->输入('电话'), '消息' => $request->输入('消息') ];

  Mail::to('info@getkutt.com')->send(new ContactForm($data));

然后在我有的构建方法中的邮件文件夹下的contactform.php中

public function build()
{
    return $this->from('no-reply@domain.com')->view('emails.app.contact-form-submission');
}

【问题讨论】:

    标签: php laravel laravel-5.4


    【解决方案1】:

    给出的答案对我来说太复杂了。下面是一个在表单中使用nameemailbody 字段的简单示例。把它放在你的控制器方法中:

        Mail::send('emails.contact', request()->all(), function ($message) {
            $message->subject('Website Contact');
            $message->to(config('mail.from.address'));
            $message->replyTo(request()->input('email'));
        });
    

    这是emails/contact 查看文件:

    Name: {{ $name }}
    Email: {{ $email }}
    Message:
    
    {{ $body }}
    

    【讨论】:

      【解决方案2】:

      这是来自laravel docs 的示例

      namespace App\Mail;
      
      use App\Order;
      use Illuminate\Bus\Queueable;
      use Illuminate\Mail\Mailable;
      use Illuminate\Queue\SerializesModels;
      
      class YOURCLASSNAME extends Mailable
      {
          use Queueable, SerializesModels;
      
          //Here you are going to define the variables 
          //which you are pass to your view
          public $name;
          public $email;
          public $phone;
          public $message;
      
          /**
           * Create a new message instance.
           *
           * @return void
           */
          public function __construct(Order $order)
          {
              //Now in the construct, you receive the input from request
              $this->name = $request->input('name');
              $this->email = $request->input('email');
              $this->phone = $request->input('phone');
              $this->message = $request->input('message');
          }
      
          /**
           * Build the message.
           *
           * @return $this
           */
          public function build()
          {
              //And now you return the input to your view
              return $this->view('emails.app.contact-form-submission')
                      ->with([
                          'name' => $this->name,
                          'email' => $this->email,
                          'phone' => $this->phone,
                          'message' => $this->message,
                      ]);
           }
      }
      

      之后,您可以在刀片中使用 with 的任何变量

      The name: {{ $name }} and email: {{ $email }}

      【讨论】:

        【解决方案3】:

        Laravel 5.6 方式使用公共属性(https://laravel.com/docs/5.6/mail#writing-mailables):

        可邮寄类,例如“回调.php”:

        namespace App\Mail;
        
        use Illuminate\Bus\Queueable;
        use Illuminate\Mail\Mailable;
        use Illuminate\Queue\SerializesModels;
        use Illuminate\Contracts\Queue\ShouldQueue;
        
        class CallBack extends Mailable
        {
            use Queueable, SerializesModels;
        
            public $name;
            public $phone;
            public $body;
        
            /**
             * Create a new message instance.
             *
             * @return void
             */
            public function __construct($name, $phone, $body)
            {
                $this->name = $name;
                $this->phone = $phone;
                $this->body = $body;
            }
        
            /**
             * Build the message.
             *
             * @return $this
             */
            public function build()
            {
                return $this->view('emails.callback')->subject('mail subject');
            }
        }
        

        控制器:

            Mail::to('admin@email.com')
                ->send(new CallBack($request->input('name'), $request->input('phone'), $request->input('body')));
        

        callback.blade.php:

        <h1>Laravel Email</h1>
        
        <p>name: {{ $name }}</p>
        
        <p>phone: {{ $phone }}</p>
        
        <p>body: {{ $body }}</p>
        

        【讨论】:

          【解决方案4】:

          在您的 ContactForm ma​​ilabel 类中创建公共属性,并使用构造函数从控制器接收数据到该类。

          例如-

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

          【讨论】:

            猜你喜欢
            • 2018-02-01
            • 2019-03-12
            • 1970-01-01
            • 1970-01-01
            • 2017-11-24
            • 2017-07-26
            • 2018-07-31
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多