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.

2.0.9 2017-04-26 19:07 UTC

This package is auto-updated.

Last update: 2020-01-05 22:54:01 UTC


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);