Laravel - Enviando Email

Laravel usa uma biblioteca rica em recursos gratuitos SwiftMailerpara enviar e-mails. Usando a função de biblioteca, podemos enviar e-mails facilmente sem muitos aborrecimentos. Os modelos de e-mail são carregados da mesma maneira que as visualizações, o que significa que você pode usar a sintaxe Blade e injetar dados em seus modelos.

A tabela a seguir mostra a sintaxe e os atributos de send função -

Sintaxe void send (string | array $ view, array $ data, Closure | string $ callback)
Parâmetros
  • $ view (string | array) - nome da visão que contém a mensagem de e-mail

  • $ data (array) - array de dados para passar para ver

  • $ callback - um closure callback que recebe uma instância da mensagem, permitindo que você personalize os destinatários, assunto e outros aspectos da mensagem de e-mail

Devoluções nada
Descrição Envia email.

No terceiro argumento, o $ callback closure recebeu a instância da mensagem e, com essa instância, também podemos chamar as seguintes funções e alterar a mensagem conforme mostrado abaixo.

  • $ mensagem → assunto ('Bem-vindo ao ponto dos tutoriais');
  • $ mensagem → de ('[email protected] ',' Sr. Exemplo ');
  • $ mensagem → para ('[email protected] ',' Sr. Exemplo ');

Alguns dos métodos menos comuns incluem -

Para anexar ou incorporar arquivos, você pode usar os seguintes métodos -

  • $ mensagem → anexar ('caminho / para / anexo.txt');
  • $ mensagem → embed ('caminho / para / anexo.jpg');

O correio pode ser enviado como HTML ou texto. Você pode indicar o tipo de e-mail que deseja enviar no primeiro argumento, passando uma matriz conforme mostrado abaixo. O tipo padrão é HTML. Se você deseja enviar mensagens de texto simples, use a seguinte sintaxe.

Sintaxe

Mail::send([‘text’=>’text.view’], $data, $callback);

Nesta sintaxe, o primeiro argumento leva uma matriz. Usartext como o nome da chave da visualização como valor da chave.

Exemplo

Step 1 - Agora enviaremos um e-mail da conta do Gmail e para isso você precisa configurar sua conta do Gmail no arquivo do ambiente Laravel - .envArquivo. Ative a verificação em duas etapas em sua conta do Gmail e crie uma senha específica do aplicativo, em seguida, altere os parâmetros .env conforme mostrado abaixo.

.env

MAIL_DRIVER = smtp
MAIL_HOST = smtp.gmail.com
MAIL_PORT = 587
MAIL_USERNAME = your-gmail-username
MAIL_PASSWORD = your-application-specific-password
MAIL_ENCRYPTION = tls

Step 2 - Depois de mudar o .env arquivo execute os dois comandos abaixo para limpar o cache e reiniciar o servidor Laravel.

php artisan config:cache

Step 3 - Crie um controlador chamado MailController executando o seguinte comando.

php artisan make:controller MailController --plain

Step 4 - Após a execução bem-sucedida, você receberá a seguinte saída -

Step 5 - Copie o seguinte código em

app/Http/Controllers/MailController.php Arquivo.

app/Http/Controllers/MailController.php

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Mail;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class MailController extends Controller {
   public function basic_email() {
      $data = array('name'=>"Virat Gandhi");
   
      Mail::send(['text'=>'mail'], $data, function($message) {
         $message->to('[email protected]', 'Tutorials Point')->subject
            ('Laravel Basic Testing Mail');
         $message->from('[email protected]','Virat Gandhi');
      });
      echo "Basic Email Sent. Check your inbox.";
   }
   public function html_email() {
      $data = array('name'=>"Virat Gandhi");
      Mail::send('mail', $data, function($message) {
         $message->to('[email protected]', 'Tutorials Point')->subject
            ('Laravel HTML Testing Mail');
         $message->from('[email protected]','Virat Gandhi');
      });
      echo "HTML Email Sent. Check your inbox.";
   }
   public function attachment_email() {
      $data = array('name'=>"Virat Gandhi");
      Mail::send('mail', $data, function($message) {
         $message->to('[email protected]', 'Tutorials Point')->subject
            ('Laravel Testing Mail with Attachment');
         $message->attach('C:\laravel-master\laravel\public\uploads\image.png');
         $message->attach('C:\laravel-master\laravel\public\uploads\test.txt');
         $message->from('[email protected]','Virat Gandhi');
      });
      echo "Email Sent with attachment. Check your inbox.";
   }
}

Step 6 - Copie o seguinte código em resources/views/mail.blade.php Arquivo.

resources/views/mail.blade.php

<h1>Hi, {{ $name }}</h1>
l<p>Sending Mail from Laravel.</p>

Step 7 - Adicione as seguintes linhas em app/Http/routes.php.

app/Http/routes.php

Route::get('sendbasicemail','MailController@basic_email');
Route::get('sendhtmlemail','MailController@html_email');
Route::get('sendattachmentemail','MailController@attachment_email');

Step 8 - Visite o seguinte URL para testar o e-mail básico.

http://localhost:8000/sendbasicemail

Step 9- A tela de saída será semelhante a esta. Verifique sua caixa de entrada para ver a saída de e-mail básica.

Step 10 - Visite o seguinte URL para testar o e-mail em HTML.

http://localhost:8000/sendhtmlemail

Step 11- A tela de saída será semelhante a esta. Verifique sua caixa de entrada para ver a saída de e-mail html.

Step 12 - Visite o seguinte URL para testar o e-mail HTML com anexo.

http://localhost:8000/sendattachmentemail

Step 13 - Você pode ver a seguinte saída

Note - no MailController.phpfile o endereço de e-mail no método de deve ser o endereço de e-mail a partir do qual você pode enviar o endereço de e-mail. Geralmente, deve ser o endereço de e-mail configurado em seu servidor.