首页 > 解决方案 > 504 网关超时 | 提交表格到邮件后

问题描述

提交表单时出现此错误,504 Gateway Time-out

我不知道为什么,当我用 mailtrap.io 测试我的邮件时它工作了,但是当我使用我的主机设置时,它给了我一个错误

这是我的邮件控制器

namespace App\Http\Controllers;


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

class Contactmail extends Controller
{
    public function create()
    {
        return view('contact');
    }

    public function store()
    {
        $data = request()->validate([
            'name' => 'required',
            'email' => 'required|email',
            'message' => 'required',
        ]);
        Mail::to('myemail@email.com')->send(new \App\Mail\Contactmail($data));
        return redirect('contact')
            ->with('message', 'Thanks for your message. We'll be in touch.');
    }
}

并且视图刀片是

@component('mail::message')
    # Thank you for your message

    <strong>Name</strong> {{ $data['name'] }}
    <strong>Email</strong> {{ $data['email'] }}
    <strong>Message</strong> {{ $data['message'] }}
@endcomponent

所以我不知道我做错了什么

标签: laravelformsemailsmtpsubmit

解决方案


如果您在本地测试您的项目,可能是因为您的 ISP 阻止了该端口。

我使用 tinker 进行快速简单的测试,至少获得错误或成功的堆栈跟踪。

从您的项目路径在终端中运行 tinker(因此它会从您的 env 文件加载您的邮件设置):

php artisan tinker

然后运行此代码段(不要忘记更新要发送到的电子邮件):

   \Mail::raw('hello world', function($message) {
      $message->subject('Test Mail')->to('test@example.org');
   });

这应该会给你一个成功或至少一个堆栈跟踪来进一步调试问题。

附带说明一下,如果您使用 gmail 进行测试,您可能需要在 Gmail 中配置 2FA 或设置不安全应用选项以通过 Gmail 发送进行测试。


推荐阅读