我尝试在Laravel 5.5中发送联系邮件,我阅读了文档并尝试了使用其中描述的方法,但不起作用。这是我的代码。
这是我的表单
<form class="send_message" action="{{url('send_mail_error_card_r')}}" method="post">
<div class="text_box">
{{csrf_field()}}
<textarea id="send_mail_error_card" name="send_mail_error_card" rows="5" cols="40" class="form-control send_mail_error_card"></textarea>
<div class="send_button_box">
<button type="submit" id="send_message" class="btn btn-default">Enviar <span class="glyphicon glyphicon-send"></span></button>
</div>
</div>
</form>
我的路线
Route::post('/send_mail_error_card_r', 'HomeController@send_mail_error_card_r');
我的控制器
public function send_mail_error_card_r(Request $request)
{ $email = 'viniciusdemourarosa@gmail.com';
$data['text'] = $request->send_mail_error_card;
Mail::send('mail.contact', $data, function($message) use ($email){
$message->from('vinicius.rosa@bolder.com.br', 'Contabileads Developer');
$message->to($email);
$message->subject("Atenção!");
});
}
我的邮件视图
<!DOCTYPE html>
<html>
<body>
{{$data['text']}}
</body>
</html>
我的邮件联系
public function __construct($data)
{
$this->data = $data;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->view('mail.contact')->with(['data', $this->data]);
}
我的邮件配置
在config/mail.php
'driver' => env('MAIL_DRIVER', 'mailgun'),
在config/services.php
'mailgun' => [
'domain' => 'secret',
'secret' => 'secret',
],
在.ENV
档案
MAIL_DRIVER=mailgun
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=587
MAIL_USERNAME=secret
MAIL_PASSWORD=secret
MAIL_ENCRYPTION=ssl
我的代码返回
ErrorException (E_ERROR)
Undefined variable: data (View: /var/www/html/planos/resources/views/mail/contact.blade.php)
有什么建议吗?提前谢谢!
答案 0 :(得分:4)
数据属性必须为public
:
public $data;
public function __construct($data)
{
$this->data = $data;
}
来自the docs:
通常,您需要将一些数据传递给您在呈现电子邮件HTML时可以使用的视图。您可以通过两种方式为视图提供数据。首先,您的mailable类中定义的任何
public
属性都将自动提供给视图
答案 1 :(得分:1)
public function build()
{
$data = $this->data;
return $this->view('mail.contact')->with(['data', $data]);
}
这将非常适合您。干杯
答案 2 :(得分:1)
在邮件构建功能中更改此功能
->with(['data', $this->data]);
到此
->with(['data' => $this->data]);