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 |
|
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 -
- $ mensagem → remetente ('[email protected]', 'Sr. Exemplo');
- $ mensagem → returnPath ('[email protected] ');
- $ mensagem → cc ('[email protected]', 'Sr. Exemplo');
- $ mensagem → bcc ('[email protected] ',' Sr. Exemplo ');
- $ mensagem → replyTo ('[email protected] ',' Sr. Exemplo ');
- $ mensagem → prioridade (2);
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.