【发布时间】:2018-08-12 11:32:36
【问题描述】:
我有一个与任何其他联系表单一样的联系表单(它有一个包含姓名、电子邮件、主题和消息的字段)。
我创建了一个 FormController.php,在其中验证我的来自并使用 Mail 发送我的表单。
我还使用php artisan make:mail FormMail --markdown=emails.form.data 生成了一个Mailable。
我有以下问题:
- 我想将某人输入到 ->from() 方法中的电子邮件传递给我,但我收到一个错误消息,显示为
Undefined variable。我如何提取该特定值,以便当我收到一封电子邮件时,它说它来自试图与我联系的人? 到目前为止,我已经收到了 Laravel 中提供的默认电子邮件(hello@example.com)。我希望电子邮件成为用户输入的电子邮件。例如 emily@mail.com- 我无法将主题传递给 ->subject() 方法。我得到与 #1 相同的错误
这是我的表单控制器
<?php
namespace App\Http\Controllers;
use App\Mail\FormMail;
use App\Http\Requests;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Validator;
class FormController extends Controller
{
public function getContacto() {
return view('pages.contacto');
}
public function postContacto(Request $request) {
$email = 'random@email.com';
$rules = [
'name' => 'required|regex:/^[\pL\pM\p{Zs}.-]+$/u',
'email1' => 'required|email',
'email2' => 'required|email|same:email1',
'subject' => 'required|max:70',
'bodyMessage' => 'required|max:500'
];
$this->validate($request, $rules);
$name = $request->name;
$email1 = $request->email1;
$subject = $request->subject;
$bodyMessage = $request->bodyMessage;
Mail::to($email)->send(new FormMail($name, $email1, $subject, $bodyMessage));
return view('pages.sent');
}
}
这是我的可邮寄的 FormMail.php
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class FormMail extends Mailable
{
use Queueable, SerializesModels;
public $name;
public $email1;
public $subject;
public $bodyMessage;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($name, $email1, $subject, $bodyMessage)
{
$this->name = $name;
$this->email1 = $email1;
$this->subject = $subject;
$this->bodyMessage = $bodyMessage;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->with([
'name' => $this->name,
'subject' => $this->subject,
'bodyMessage' => $this->bodyMessage
])
->markdown('emails.form.data');
/*DOES NOT WORK
return $this->from($email1)->subject($subject)->with([
'name' => $this->name,
'email1' => $this->email1])
->markdown('emails.form.data');*/
}
}
您在我的代码中看到的任何帮助和错误将不胜感激。谢谢。
【问题讨论】:
-
请添加您的邮件视图代码。