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.
Desta forma o email será enviado de forma automática é? Após criar um form para envio de emails que parâmetro deve ser passando para que este reconheça a função send do Controller criado acima? Este exemplo serve para recebimento ou envio de email? Ou os dois?
ResponderExcluirOlá Rodrigo,
ExcluirO post acima se refere a um formulário de contato que é preenchido e enviado para um e-mail pré-definido.
Abraço
Tá .. entendi. Mas aquele arquivo index ali serve pra que?
ResponderExcluirOlá Rodrigo,
ExcluirEsse arquivo é o template que será enviado ao e-mail cadastrado.
Abraço