简体   繁体   English

当用户使用Laravel提交联系表单时接收电子邮件

[英]Receive email message when user submits contact form using Laravel

I currently have a Laravel application that has a contact form. 我目前有一个Laravel应用程序,它有一个联系表单。 When the form is submitted, the users name, email, phone number and message all properly get stored in my DB, the user receives a confirmation email and I don't receive any errors. 提交表单时,用户名,电子邮件,电话号码和消息都正确存储在我的数据库中,用户收到确认电子邮件,我没有收到任何错误。 My question is, as the person who owns the form, how do I use Laravel to receive the users name and message to my gmail account? 我的问题是,作为拥有该表单的人,我如何使用Laravel接收用户名和消息到我的Gmail帐户? I am using gmail smtp to send emails to the user who submits the form. 我正在使用gmail smtp向提交表单的用户发送电子邮件。 I want the users contact form information (just name and message) to be sent to my gmail email. 我希望用户联系表单信息(只是名称和消息)发送到我的Gmail电子邮件。

MessagesController.php MessagesController.php

    <?php
namespace App\Http\Controllers;
use App\Mail\MessageCreated;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use App\Message;
use Illuminate\Support\Facades\Mail;

class MessagesController extends Controller
{
    public function submit(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'name' => 'required|min:2',
            'email' => 'required|max:255',
            'phonenumber' => 'required|min:11',
            'message' => 'required|min:5',
        ]);


        if ($validator->fails()) {
            return redirect(url()->previous() . '#contact')
                ->withErrors($validator)
                ->withInput();
        }

        $message = Message::create($request->all());

        Mail::to($message->email)->queue(
            new MessageCreated($message)
        );


        return redirect('/')->with('success', 'Your message has been 
            successfully sent. We will reach out to you soon');
    }
}

Model: Message.php 型号:Message.php

    <?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Message extends Model
{
    protected $guarded = [];

    public function email(){
        return $this->belongsTo(Message::class);
    }
}

Mailable: MessageCreated.php Mailable:MessageCreated.php

<?php

namespace App\Mail;

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

class MessageCreated extends Mailable
{
    use Queueable, SerializesModels;

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

    public function build()
    {
        return $this->markdown('mail.message-created');
    }
}

Message the user receives: message-created.blade.php 用户收到的消息:message-created.blade.php

    @component('mail::message')

We appreciate you taking the time to contact us. We will be reaching out to you soon.

@component('mail::button', ['url' => 'mysamplesite.io'])
Back to homepage
@endcomponent

Thank you,<br>

@endcomponent

Laravel makes it super easy. Laravel让它变得非常简单。

In your controller after Mail::to() ... , simply add the following piece of script: Mail::to() ...之后的控制器中,只需添加以下脚本:

Mail::raw("name: $message->name \n message: $message->message", function($message) {
      $message->to('your-gmail-address')
      ->subject('New contact form is submitted.');
 });

你把你的电子邮件放在队列中,所以你应该让php artisan queue:work发送它或使用send功能而不是queue

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 用户提交表单时如何通过电子邮件发送联系表单 - how to send a contact form by email when user submits forms 用户提交表单时如何显示消息 - How to display message when a user submits the form 如何通过 laravel 的电子邮件从联系表单接收信息 - How to receive information from a contact form by email with laravel 如何管理.env文件以便在laravel中以联系表的形式接收电子邮件? - How to manage .env file in order to receive email in contact form in laravel? 用户提交名称和电子邮件时显示秘密页面的PHP表单 - PHP form that shows secret page when user submits name & email Laravel联系人表单电子邮件在发送电子邮件后不会显示消息 - Laravel contact form email will not show message after email is sent 当用户提交 Google 表单时,是否可以使用提交的数据生成电子邮件? - When a user submits a Google Form, can an email be generated with the submitted data? Laravel 4使用邮件类联系表单,错误未定义$ data来自包含电子邮件的视图 - Laravel 4 contact form using mail class, error undefined $data from view containing email message 联系人表单消息出现,但没有电子邮件 - Contact form message appears but no email 使用jQuery AJAX从Laravel 5中的联系表单发送电子邮件 - Send email from contact form in Laravel 5 using jQuery AJAX
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM