square3 / trigger-email
Package to send automatic emails
This package's canonical repository appears to be gone and the package has been frozen as a result.
Requires
- php: >=5.5.9
- laravel/framework: 5.2.*
README
Neste pacote é disponibilizado uma trait para disparo de emails "automáticos"
Instalação
Execute o comando abaixo
composer require square3/trigger-email
Após a instalação através do composer, adicione a linha abaixo no arquivo config/app.php
Square3\TriggerEmail\TriggerEmailServiceProvider::class
Configuração
Publique o arquivo de configuração
php artisan vendor:publish --tag=config
Ao executar o comando acima, o arquivo trigger_email.php
será copiado para config/trigger_email.php
.
Configure o arquivo .env
para que o sistema esteja apto para realizar envio de emails e adicione a constante MAIL_PROJECT_NAME
juntamente com as configurações de email.
MAIL_PROJECT_NAME="Nome que ficará como remetente - Nome do projeto"
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=example@domain.com
MAIL_PASSWORD=password
MAIL_ENCRYPTION=tls
Limpe o cache de configurações para a alteração no .env
validar
php artisan config:cache
Como usar
Importe a trait no controller que contém o método onde deverá ser disparado o email e adicione a chamada ao método sendEmail
<?php
namespace Laraveldaily\Timezones;
use Square3\TriggerEmail\TriggerEmail;
class TimezonesController
{
use TriggerEmail;
public function index()
{
$this->setEmailView('tracking')
->setToName('João da Silva')
->setToEmail('joao@gmail.com')
->sendEmail();
// Do anything
}
}
A trait
A trait é composta por um método responsável por enviar o template de email quando solicitado. Esta também possui três propriedades, sendo:
$emailView
- Template à ser enviado que deve conter um dos seguintes valores:- register - Quando cliente se cadastra no site
- purchase - Quando uma compra é realizada no site
- tracking - Quando código de rastreamento do produto é cadastrado no admin
$toEmail
- Endereço de email do destinatário$toName
- Nome do destinatário
// trait TriggerEmail.php
/**
* @param string $template -- Template to be sent
*/
protected $emailView;
/**
* @param $toEmail -- Recipient's email address
*/
protected $toEmail;
/**
* @param null $toName -- Recipient's email name
*/
protected $toName;
/**
* This property has three options to define the template of emails to send
*/
protected $templates = [
'register' => 'trigger_email::customer_register',
'purchase' => 'trigger_email::purchase',
'tracking' => 'trigger_email::tracking_code',
];
private function sendEmail()
{
if (isset($this->emailView) && isset($this->toEmail)) {
Mail::queue($this->templates[$this->emailView], [], function ($message){
$message->from(config('trigger_email.from_email'), config('trigger_email.from_name'))
->to($this->toEmail, $this->toName)
->subject(trans("trigger_email::messages.{$this->emailView}.subject"));
});
}
return;
}
To Do
- Concluir os templates de email
- Colocar os templates para utilizar os arquivos de multi-idiomas
Qualquer dúvida, sugestão ou contribuição, entrar em contato através do email abaixo
Autor e suporte
TGOO Worldwide
Ramires Gomes
Analista Desenvolvedor de Sistemas
ramires.gb@gmail.com
$emailData = [
'customer' => $request->toArray(),
'cart' => $cart->toArray(),
'order' => str_pad($sales->id, 6, '0', STR_PAD_LEFT),
'shipping_cost' => floatval($shippingCost['pac']['valor']),
'total' => $total
];
$this->setEmailView('purchase')
->setToName($customer->name)
->setToEmail($customer->customer->email)
->sendEmail($emailData);