Ferramentas do usuário

Ferramentas do site


infotic:laravel:mail

Mail com Laravel

Introdução

Laravel provê uma API construida sobre a biblioteca SwiftMailer com drivers para STMP, Mailgun, SparkPost, Amazon SES, funções PHP's mail e sendmail, permitindo rapidamente implementar o envio de e-mail, seja localmente, quer seja por serviços em nuvem.

Pré-requisitos

A API baseada nos drives Mailgun e SparkPost são geralmente mais simples e rápidos que os serviços SMTP. Se possível, deve-se usar um desses drivers. Todos os driver da API requerem a biblioteca Guzzle HTTP, que pode ser instalada via gerenciador de pacotes Composer.

composer require guzzlehttp/guzzle

Mailgun Driver

Para usar o Driver Mailgun, deve-se primeiramente instalar o Guzzle, então, atribui-se a opção driver no arquivo de configuração config/mail.php para mailgun. Em seguida, deve-se verificar se o arquivo de configuração config/serveces.php contêm as seguintes opções:

'mailgun' ⇒ [
'domain' ⇒ 'your-mailgun-domain',
'secret' ⇒ 'your-mailgun-key',
],

SparkPost Driver

Para usar o Driver SparkPost, deve-se primeiramente instalar o Guzzle, então, atribui-se a opção driver no arquivo de configuração config/mail.php para sparkpost Em seguida, deve-se verificar se o arquivo de configuração config/serveces.php contêm as seguintes opções:

'sparkpost' ⇒ [
'secret' ⇒ 'your-sparkpost-key',
],

SES Driver

Para usar o Driver Amazon SES, deve-se primeiramente instalar o Amazon AWS SDK para PHP. Para isso, deve-se adicionar a linha de código a seguir no arquivo composer.json na seção require e executar o comando composer update:

“aws/aws-sdk-php”: “~3.0”

Em seguida, atribui-se a opção driver no arquivo de configuração config/mail.php para ses e verifica-se o arquivo de configuração config/serveces.php para assegurar se o mesmo contêm as seguintes opções:

'ses' ⇒ [
'key' ⇒ 'your-ses-key',
'secret' ⇒ 'your-ses-secret',
'region' ⇒ 'ses-region',
],

Gerando Mailables

Em Laravel, cada tipo de email enviado pela aplicação é representada como uma classe mailable. Essa classe está armazenada no diretório app/Mail. Para criar um mailable, pode-se usar o comando make:mail:

php artisan make:mail OrderShipped

Escrevendo Mailables

Toda a configuração de uma classe mailable é feito no método build. Com este método, pode-se chamar vários outros métodos como from, subject, view e attach para configurar o email.

Configurando o Sender

Usando o método from

Há duas formar de configurar o sender. Primeiramente, pode-se usar o método from com o método build da classe mailable:

public function build()
{
return $this→from('example@example.com')
→view('emails.orders.shipped');
}

Usando um endereço from global

Toda via, se a aplicação usa um mesmo endereço remetente para qualquer envio, pode-se tornar custoso chamar o método from em cada classe mailable. Contudo, pode-se especificar um endereço remetente global no arquivo de configuração config/mail.php. Este endereço é usado se nenhum outro endereço remetente for especificado na classe mailable.

from' ⇒ ['address' ⇒ 'example@example.com', 'name' ⇒ 'App Name'],

Configurando a View

Em um método build de uma classe mailable, pode-se utilizar o método view para especificar qual template deve ser usado quando renderizar o conteúdo do e-mail. Uma vez que cada e-mail tipicamente usa um blade template para renderizar o conteúdo, tem-se toda a conveniência do blade para construir e-mails com HTML.

public function build()
{
return $this→view('emails.orders.shipped');
}
Você talvez deseja criar um diretório resources/views/emails para hospedar todos os seus templates de emails; toda via, você é livre para armazená-los onde você desejar, desde que dentro do diretório resources/views.

Enviando e-mail

Para enviar um email, usa-se o método to no facade Mail. O método to aceita um endereço de email, uma instância de user, ou uma coleção de users. Se for passado um objeto ou uma coleção deles, o mailer irá usar suas propriedades email e name quando configurar o e-mail, devendo confirmar que esses atributos estão disponíveis no objeto passado. Uma vez especificados, pode-se passar uma instância da classe mailable para o método send:

class OrderController extends Controller {
public function ship(Request $request, $orderId){
$order = Order::findOrFail($orderId);
Mail::to($request→user())→send(new OrderShipped($order));
}
}
infotic/laravel/mail.txt · Última modificação: 27/04/2021 12:05 por 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki