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
相关产品推荐
相关产品推荐

