php - 用户使用 Laravel 提交联系表单时收到电子邮件
问题描述
我目前有一个带有联系表的 Laravel 应用程序。提交表单后,用户名、电子邮件、电话号码和消息都正确存储在我的数据库中,用户收到一封确认电子邮件,我没有收到任何错误。我的问题是,作为拥有表单的人,我如何使用 Laravel 将用户名和消息接收到我的 gmail 帐户?我正在使用 gmail smtp 向提交表单的用户发送电子邮件。我希望将用户联系表格信息(只是姓名和消息)发送到我的 gmail 电子邮件。
消息控制器.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');
}
}
型号:Message.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Message extends Model
{
protected $guarded = [];
public function email(){
return $this->belongsTo(Message::class);
}
}
可邮寄: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-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 让它变得超级简单。
在您的控制器之后Mail::to() ...
,只需添加以下脚本:
Mail::raw("name: $message->name \n message: $message->message", function($message) {
$message->to('your-gmail-address')
->subject('New contact form is submitted.');
});
推荐阅读
- angular - node_modules/@angular/material/index.d.ts' 不是模块
- angular - 如何将组件添加到角度 6 中的另一个组件中
- c - 无法使用 setsockopt 在带有 IP_TOS 套接字选项的 Mac OS Majave 上设置 QOS 标记
- ios - 使用 AVCaptureSession 在录制的视频上弹出声音
- c - 如何杀死/结束/取消/加入套接字阻塞线程?
- azure-active-directory - 使用 Microsoft Graph 访问 Azure 企业应用
- javascript - react-chartjs-2 CDN 中的“流程未定义”
- python - 需要 Python 输入和分配帮助
- java - 如何使用 Java Spring Boot 更新 MognoDB 中的数组字段?
- select - 添加到购物车 - 从带有添加到购物车按钮的下拉变体选择更改为 Shopify / Liquid 上每个变体的单个添加到购物车按钮