Laravel 5 联系表无效
Laravel 5 contact form not working
我没有任何错误,但我没有收到来自表单的任何电子邮件。
这是视图(缩小):
{!! Form::open(['route' => 'contact_store', 'class' => 'form', 'method' => 'POST', 'files' => false]) !!}
<input type="text" id="nombre" name="nombre" class="form-control">
<input type="text" id="email" name="email" class="form-control">
<textarea id="texto" name="texto" class="form-control"></textarea>
{!! Form::submit('enviar', ['class' =>'btn btn-primary']) !!}
{!! Form::close() !!}
控制器有两种方法:
namespace App\Http\Controllers\Web;
use App\Http\Requests\ContactRequest;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Mail;
class ContactController extends Controller
{
public function create()
{
return view('web.nosotros.escribenos.escribenos');
}
public function store(Request $request)
{
$data = array(
'nombre' => $request->nombre,
'email' => $request->email,
'texto' => $request->texto,
);
Mail::send('web.emails.contact', $data, function($message) use ($data){
$message->from($data['email']);
$message->to('my_email@domain.com');
$message->subject('web contact');
});
return view('web.nosotros.escribenos.escribenos', compact('data'));
}
}
视图web/emails/contact只是邮件的格式:
<h3>New message from the web!</h3>
<div>
{{$texto}}
</div>
<p>from: {{ $email }}</p>
路线在routes/web。php
Route::get('escribenos', ['as' => 'contact', 'uses' => 'ContactController@create']);
Route::post('escribenos', ['as' => 'contact_store', 'uses' => 'ContactController@store']);
在config/mail.php我有:
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'mydomain.com'),
'port' => env('MAIL_PORT', 25),
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'webmaster@mydomain.com'),
'name' => env('MAIL_FROM_NAME', 'webmaster'),
],
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
最后在 .env:
MAIL_DRIVER=smtp
MAIL_HOST=mydomain.com
MAIL_PORT=25
MAIL_USERNAME=webmaster@mydomain.com
MAIL_PASSWORD=my_password
MAIL_ENCRYPTION=null
一切似乎都很好,我没有任何错误,但我也没有收到任何电子邮件。任何的想法?谢谢。
要测试您的电子邮件,您可以使用 mailtrap.io 并将 username/password 等添加到 .env 设置中。
以下是我通常的设置方式:
控制器:
use Illuminate\Support\Facades\Input;
public function sendEmail(Request $request)
{
$data = array(
'nombre' => $request->get('nombre'),
'email' => $request->get('email'),
'texto' => $request->get('texto')
);
// php artisan make:mail sendMessage - this needs to be ran in terminal / cmd
Mail::to(config('mail.from.address'))->send(new sendMessage($data));
}
SendMail.php:
private $data;
public function __construct($data)
{
$this->data = $data;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
$data = $this->data;
return $this->view('web.emails.contact', compact('data'))
->subject('Web Contact')
->from(Input::get('email'));
}
web/emails/contact.blade(基本示例):
<p>
Hey there {{ config('mail.from.name') }}
</p>
<p>
You have an email from {{ $data['nombre'] }} - email address {{ $data['email'] }}
</p>
<p>
{!! $data['texto'] !!}
</p>
config('mail.from.name)
和 config('mail.from.address)
可以在 config/mail.php
内调整,或者您可以简单地删除这些并添加您自己的姓名/电子邮件地址。
我没有任何错误,但我没有收到来自表单的任何电子邮件。
这是视图(缩小):
{!! Form::open(['route' => 'contact_store', 'class' => 'form', 'method' => 'POST', 'files' => false]) !!}
<input type="text" id="nombre" name="nombre" class="form-control">
<input type="text" id="email" name="email" class="form-control">
<textarea id="texto" name="texto" class="form-control"></textarea>
{!! Form::submit('enviar', ['class' =>'btn btn-primary']) !!}
{!! Form::close() !!}
控制器有两种方法:
namespace App\Http\Controllers\Web;
use App\Http\Requests\ContactRequest;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Mail;
class ContactController extends Controller
{
public function create()
{
return view('web.nosotros.escribenos.escribenos');
}
public function store(Request $request)
{
$data = array(
'nombre' => $request->nombre,
'email' => $request->email,
'texto' => $request->texto,
);
Mail::send('web.emails.contact', $data, function($message) use ($data){
$message->from($data['email']);
$message->to('my_email@domain.com');
$message->subject('web contact');
});
return view('web.nosotros.escribenos.escribenos', compact('data'));
}
}
视图web/emails/contact只是邮件的格式:
<h3>New message from the web!</h3>
<div>
{{$texto}}
</div>
<p>from: {{ $email }}</p>
路线在routes/web。php
Route::get('escribenos', ['as' => 'contact', 'uses' => 'ContactController@create']);
Route::post('escribenos', ['as' => 'contact_store', 'uses' => 'ContactController@store']);
在config/mail.php我有:
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'mydomain.com'),
'port' => env('MAIL_PORT', 25),
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'webmaster@mydomain.com'),
'name' => env('MAIL_FROM_NAME', 'webmaster'),
],
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
最后在 .env:
MAIL_DRIVER=smtp
MAIL_HOST=mydomain.com
MAIL_PORT=25
MAIL_USERNAME=webmaster@mydomain.com
MAIL_PASSWORD=my_password
MAIL_ENCRYPTION=null
一切似乎都很好,我没有任何错误,但我也没有收到任何电子邮件。任何的想法?谢谢。
要测试您的电子邮件,您可以使用 mailtrap.io 并将 username/password 等添加到 .env 设置中。
以下是我通常的设置方式:
控制器:
use Illuminate\Support\Facades\Input;
public function sendEmail(Request $request)
{
$data = array(
'nombre' => $request->get('nombre'),
'email' => $request->get('email'),
'texto' => $request->get('texto')
);
// php artisan make:mail sendMessage - this needs to be ran in terminal / cmd
Mail::to(config('mail.from.address'))->send(new sendMessage($data));
}
SendMail.php:
private $data;
public function __construct($data)
{
$this->data = $data;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
$data = $this->data;
return $this->view('web.emails.contact', compact('data'))
->subject('Web Contact')
->from(Input::get('email'));
}
web/emails/contact.blade(基本示例):
<p>
Hey there {{ config('mail.from.name') }}
</p>
<p>
You have an email from {{ $data['nombre'] }} - email address {{ $data['email'] }}
</p>
<p>
{!! $data['texto'] !!}
</p>
config('mail.from.name)
和 config('mail.from.address)
可以在 config/mail.php
内调整,或者您可以简单地删除这些并添加您自己的姓名/电子邮件地址。