You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 5.6配置Gmail实现表单提交后自发送邮件技术问询

实现表单提交后发送含表单信息的邮件(Laravel环境)

看起来你已经搞定了邮件配置的核心基础工作,接下来咱们把剩下的步骤补全,顺利实现目标功能:

1. 完善你的Mailable类

你已经创建了InquirySent类,现在需要让它能接收并传递表单数据,同时指定邮件的渲染视图。修改app/Mail/InquirySent.php文件:

namespace App\Mail;

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

class InquirySent extends Mailable
{
    use Queueable, SerializesModels;

    // 定义公共属性存储表单数据,后续视图可直接调用
    public $formData;

    /**
     * 初始化邮件实例,接收表单数据
     *
     * @param array $formData
     * @return void
     */
    public function __construct($formData)
    {
        $this->formData = $formData;
    }

    /**
     * 构建邮件内容
     *
     * @return $this
     */
    public function build()
    {
        return $this->subject('新的表单提交通知') // 设置邮件主题
                    ->view('emails.inquiry'); // 指定邮件渲染视图
    }
}

2. 创建邮件视图模板

在resources/views/emails目录下新建inquiry.blade.php文件,用来渲染邮件的具体内容,这里可以直接使用Mailable类传递的$formData变量:

<!DOCTYPE html>
<html>
<head>
    <title>新表单提交通知</title>
</head>
<body>
    <h2>你收到了一条新的表单提交</h2>
    <p>以下是表单提交的详细内容:</p>
    <ul>
        @foreach($formData as $field => $value)
            <li><strong>{{ ucfirst($field) }}:</strong> {{ $value }}</li>
        @endforeach
    </ul>
</body>
</html>

3. 在控制器中处理表单提交并触发邮件发送

假设你的表单提交请求会走到FormController的submit方法,修改控制器代码如下:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
use App\Mail\InquirySent;

class FormController extends Controller
{
    public function submit(Request $request)
    {
        // 先对表单数据做验证(根据你的实际字段调整规则)
        $validatedData = $request->validate([
            'name' => 'required|string|max:255',
            'email' => 'required|email',
            'message' => 'required|string',
            // 其他表单字段的验证规则按需添加
        ]);

        // 发送邮件:指定收件人邮箱(这里填你自己的Gmail地址),并传入验证后的表单数据
        Mail::to('mygmail@gmail.com')->send(new InquirySent($validatedData));

        // 提交成功后返回提示
        return back()->with('success', '表单提交成功,我们已收到你的信息!');
    }
}

4. 配置表单提交路由

在routes/web.php中添加POST路由,关联表单提交的控制器方法:

use App\Http\Controllers\FormController;

Route::post('/submit-form', [FormController::class, 'submit'])->name('form.submit');

5. 测试功能

现在可以打开你的表单页面,填写数据提交后,去你的Gmail邮箱查看,就能收到包含完整表单信息的邮件了。如果遇到发送失败的情况,可以查看Laravel的日志文件(storage/logs/laravel.log)排查具体错误。


内容的提问来源于stack exchange,提问作者tigerel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:10:21