Olá galera,
No post de hoje vamos mostrar como enviar e-mail usando o Laravel 4 com SMTP. Vamos aos códigos.
No arquivo app/routes.php. Crie duas novas rotas.
Route::get('form', 'ContatosController@form');
Route::post('send', 'ContatosController@send');
Dentro de app/controllers, crie o ContatosController.php e adicione o código abaixo.
<?php
class ContatosController extends BaseController {
public function form()
{
return View::make('contatos.form');
}
public function send()
{
$input = Input::all();
Mail::send('emails.contatos.index', $input, function($message) {
$message->to('email@dominio_do_site.com.br')->replyTo(Input::get('email'))->subject('Contato do site');
});
return Redirect::to('form');
}
}
Criei o controller bem simples, mas você pode adicionar validações e messagens de erro e sucesso. Note que na linha 12, estou capturando do formulário o e-mail informado.
Crie dentro de app/views/contatos, o arquivo form.blade.php. Como criar o formulário não é o foco desse post, vou deixar que você monte um formulário a sua escolha. Para exemplificar, vou adotar que o formulário tenha os seguintes campos: nome, email, telefone, assunto.
Crie dentro de app/views/emails/contatos, o arquivo index.blade.php e adicione o código abaixo.
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
</head>
<body>
<h2>Dados do contato</h2>
<p>Nome: {{ $nome }}</p>
<p>E-mail: {{ $email }}</p>
<p>Telefone: {{ $telefone }}</p>
<p>Assunto: {{ $assunto }}</p>
</body>
</html>
Perceba que estou usando como nome das variáveis os nomes dos campos do formulário.
Se você fizer o submit vai notar que não funciona, pois não temos os parâmetros do e-mail configurado. O arquivo a ser configurado é o app/config/mail.php. Para exemplificar, vamos usar a configuração de dois servidores de hospedagem.
Primeiro a configuração para o KingHost.
<?php
return array(
'driver' => 'smtp',
'host' => 'smtp.dominio_do_site.com.br',
'port' => 465,
'from' => array('address' => 'email@dominio_do_site.com.br', 'name' => 'Meu site'),
'encryption' => 'ssl',
'username' => 'email@dominio_do_site.com.br', //Utilize um e-mail criado com o seu domínio
'password' => 'minha_senha', //Utilize a senha do e-mail criado
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,
);
Segundo a configuração para o HostGator.
<?php
return array(
'driver' => 'smtp',
'host' => 'gator2024.hostgator.com',
'port' => 465,
'from' => array('address' => 'email@dominio_do_site.com.br', 'name' => 'Meu site'),
'encryption' => 'ssl',
'username' => 'meu_usuario', //Utilize o usuário informado na criação da conta do HostGator
'password' => 'minha_senha', //Utilize a senha recebida por e-mail pelo HostGator
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,
);
A configuração do mail.php vai depender muito do servidor onde a aplicação vai ser hospedada.
Espero que vocês tenham gostado e qualquer dúvida é só postar no blog.
Grande abraço a todos e até a próxima.