Crear un proyecto de laravel
composer create-project laravel/laravel proyecto-laravel
Crear un controlador
php artisan make:controller ControllerMail
Después de crear controlador, agregar una función para cargar la vista del formulario de mensaje
app/Http/Controllers/ControllerMail.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class SendEmailController extends Controller
{
function index()
{
return view('form');
}
}
?>
Crear una vista Formulario de contacto
resources/views/form.blade.php
<!DOCTYPE html>
<html>
<head>
<title>How Send an Email in Laravel</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">
<!-- Styles -->
<style>
html, body {
background-color: #fff;
color: #636b6f;
font-family: 'Nunito', sans-serif;
font-weight: 200;
height: 100vh;
margin: 0;
}
.full-height {
height: 100vh;
}
.content {
text-align: center;
}
.title {
font-size: 84px;
}
</style>
</head>
<body>
<br />
<br />
<br />
<div class="container box" style="width: 970px;">
<h1 style="text-align:center;"> <tutofox/> </h1>
<h3 align="center">Cómo enviar un correo electrónico en Laravel</h3>
<br/>
@if (count($errors) > 0)
<div class="alert alert-danger">
<button type="button" class="close" data-dismiss="alert">×</button>
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
@if ($message = Session::get('success'))
<div class="alert alert-success alert-block">
<button type="button" class="close" data-dismiss="alert">×</button>
<strong>{{ $message }}</strong>
</div>
@endif
<form method="post" action="{{url('send')}}">
{{ csrf_field() }}
<div class="form-group">
<label>Nombre</label>
<input type="text" name="name" class="form-control" value="" />
</div>
<div class="form-group">
<label> Email</label>
<input type="text" name="email" class="form-control" value="" />
</div>
<div class="form-group">
<label>Mensaje</label>
<textarea name="message" class="form-control"></textarea>
</div>
<div class="form-group">
<input type="submit" name="send" class="btn btn-info" value="Enviar" />
</div>
</form>
</div>
</body>
</html>
<form method="post" action="{{url('send')}}">
Configurar Route
routes/web.php
<?php
// ruta de formulario
Route::get('/form', 'ControllerMail@index');
// ruta al enviar correo
Route::post('/send', 'ControllerMail@send');
?>
Antes de hacer la clase mailable, debemos definir la configuración del correo electrónico en el archivo .env del marco Laravel.
MAIL_DRIVER=smtp
MAIL_HOST=smtpout.secureserver.net
MAIL_PORT=80
MAIL_USERNAME=xxxxxxx
MAIL_PASSWORD=xxxxxxx
MAIL_ENCRYPTION=null
Ahora estamos listos para hacer una clase de mailable para esto, tenemos que ir a tiempo y escribir siguiendo el comando.
php artisan make:mail SendMail
Este comando creará el archivo SendMail.php dentro de App \ Mail \ SendMail.php. En esta clase tenemos que definir una propiedad con nombre $ datos, al usar esta propiedad podemos pasar datos en el momento de crear una nueva instancia de esta clase.
app/Mail/SendMail.php
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class ValidateMail extends Mailable
{
use Queueable, SerializesModels;
public $data;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($data)
{
$this->data = $data;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->view('mensaje');
}
}
Hacer archivo de vista para el cuerpo del correo electrónico
En este marco, el contenido del cuerpo del correo electrónico se ha obtenido del archivo de vista A continuación, hemos creado un archivo de vista mailmessage.blade.php en la carpeta resources/views.
resources/views/mensaje.blade.php
<!DOCTYPE html>
<html>
<head>
<title>Message</title>
<link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">
<!-- Styles -->
<style>
html, body {
background-color: #fff;
color: #636b6f;
font-family: 'Nunito', sans-serif;
font-weight: 200;
height: 100vh;
margin: 0;
}
.content { text-align: center; }
.title { font-size: 84px; }
</style>
</head>
<body>
<br />
<div class="container box" style="width: 970px;">
<h1 style="text-align:center;"> {{ $data['name'] }} </h1>
<h3 align="center">{{ $data['message'] }}</h3>
</div>
</body>
</html>
Crear una función para enviar en el controlador
use App\Mail\SendMail;
use Illuminate\Support\Facades\Mail;
public function send(Request $request)
{
$this->validate($request, [
'name' => 'required',
'email' => 'required|email',
'message' => 'required'
]);
$data = array(
'name' => $request->input('name'),
'message' => $request->input('message')
);
$email = $request->input('email');
Mail::to($email)->send(new SendMail($data));
return back()->with('success', 'Enviado exitosamente!');
}
Aquí ¿Cómo podemos enviar un correo electrónico con el código Laravel? Ahora tenemos que ejecutar la aplicación Laravel, para esto tenemos que ir a la terminal y escribir el siguiente comando.
php artisan serve
Garcias buscaba hace rato informacion para enviar correos, voy a probarlo apenas