Instalação
Artigos
Cursos
Loja
INSTALAÇÃO
ARTIGOS
CURSOS
EBOOKS
DOWNLOADS
LOJA
ARTIGOS
Como enviar e-mails com PHP e SendGrid
Aprenda a utilizar este serviço com o PHP
Fontes: → [SendGrid](https://sendgrid.com/) → [GitHub](https://github.com/sendgrid/sendgrid-php#installation) ## Introdução SendGrid é um serviço de envio de e-mails baseado em nuvem que está no mercado desde 2009. Ao londo dos anos o serviço se mostrou de confiável e de qualidade, atualmente 45 bilhões de e-mails são enviados mensalmente com o SendGrid. Dentre os milhares de clientes do SendGrid se destacam empresas como Uber, Spotify e airbnb.
## Instalação ### Pré-requisitos - PHP versão 5.6, 7.0, 7.1 ou 7.2 - Uma conta no serviço SendGrid → [serviço grátis](https://sendgrid.com/free?source=sendgrid-php) > Ao criar a conta no SendGrid você vai precisar gerar uma chave para usar a API, guarde o código da sua chave. ### Instalar o pacote É possível instalar o pacote do SendGrid de duas maneiras: composer, ou baixando os pacotes. - Composer Se você já tem um arquivo `composer.json`: ```json { "require": { "sendgrid/sendgrid": "~7" } } ``` ou se você não tem: ```bash $ composer require sendgrid/sendgrid ``` - Instalar pacote do zip Se você não estiver usando o Composer, basta baixar e instalar a [última versão empacotada da biblioteca como um zip](https://github.com/sendgrid/sendgrid-php/releases/download/v7.2.1/sendgrid-php.zip). --- ### Criar arquivo `ini` com a chave da API Crie um arquivo chamado (sugestão) `sendgrid.ini` e adicione ele ao `.gitignore`. O arquivo deve ficar assim: ``` key = YOUR_API_KEY ``` **Exemplo:** ``` key = SG.asljhdasjkdh1k2jh3kjasdhkajshdjk1 ``` ## Uso básico O código-fonte abaixo é o minimo para enviar um e-mail usando o SendGrid: ```php setFrom("email@exemplo.com", "Nome"); $email->setSubject("Assunto"); $email->addTo("email@exemplo.com", "Nome"); $email->addContent("text/plain", "conteudo"); $email->addContent("text/html", "mais conteudo"); $key = parse_ini_file('sendgrid.ini')['key']; $sendgrid = new \SendGrid($key); try { $resposta = $sendgrid->send($email); var_dump($resposta->statusCode()); var_dump($resposta->headers()); var_dump($resposta->body()); } catch (Exception $e) { var_dump( "Caught exception" . $e->getMessage()); } ``` Para entender por completo todas as funcionalidades e opções de envio de e-mails com o SendGrid [visite a documentação da API](https://sendgrid.com/docs/API_Reference/api_v3.html)
## Como enviar um e-mail para diversos endereços Existem duas maneiras de enviar um e-mail para uma lista de endereços, pode-se adicionar individualmente os e-mails ou adicionar um vetor com todos os endereços. ```php setSubject("Assunto"); $email->addTo("teste@exemplo.com", "User"); $email->addTo("teste2@exemplo.com", "User 2"); $para = [ "teste3@exemplo.com" => "User 3", "teste4@exemplo.com" => "User 4" ]; $email->addTos($para); ``` O exemplo acima está preparado para enviar um e-mail para os quatro endereços adicionados. ## Como adicionar cópia e cópia oculta Da mesma maneira que, podemos adicionar mais de um destinatário com o SendGrid é possível adicionar cópia e cópia oculta: ```php // Adiciona uma cópia $email->addCc("teste4@exemplo.com", "User4"); $ccEmails = [ "teste5@exemplo.com" => "User5", "teste6@exemplo.com" => "User6" ]; // Adiciona N cópias $email->addCcs($ccEmails); // Adiciona uma cópia oculta $email->addBcc("teste7@exemplo.com", "User7"); $bccEmails = [ "teste8@exemplo.com" => "User8", "teste9@exemplo.com" => "User9" ]; // Adiciona N cópias ocultas $email->addBccs($bccEmails); ``` ## Como anexar arquivos Para anexar um arquivo é necessário chamar a função `addAttachment()`. ```php addAttachment($attachment, $tipo, $filename, $disposicao); ``` - `$attachment` → Objeto Attachment ou conteúdo em Base64. - `$tipo` → Tipo mime do anexo, exemplo: "application/text", "image/png", "image/jpeg", etc. - `$filename` → Nome do arquivo a ser anexado. - `$disposicao` → inline ou attachment: como o anexo deve se comportar. Veja os exemplos abaixo: **Documento** ```php $file_encoded = base64_encode(file_get_contents('my_file.txt')); $email->addAttachment( $file_encoded, "application/text", "my_file.txt", "attachment" ); ``` **Imagem** ```php $data = file_get_contents('banner.png'); $email->addAttachment( base64_encode($data), "image/png", "banner.png", "attachment", "Banner" ); ``` ## Como usar templates de e-mails Usando a aplicação do SendGrid é possível criar templates HTML prontos para serem enviados. É possível definir textos, imagens, fontes, cores, etc. Para criar templates utilize a interface do próprio SendGrid, nela são disponibilizadas diversas ferramentas para facilitar esse processo. A criação do template é bem dinâmica e intuitiva. Uma vez com o template gerado para enviar um e-mail usado ele como conteúdo é bem simples. > Apenas lembre-se de substituir o ID do template por um ID seu. ```php setFrom("email@exemplo.com", "Nome"); $email->setSubject("Assunto"); $email->addTo("user@exemplo.com", "Nome"); $email->setTemplateId("d-6d4ea52f2f364e4f9e9c61c4b86ea3d8"); $key = parse_ini_file('sendgrid.ini')['key']; $sendgrid = new \SendGrid($key); try { $resposta = $sendgrid->send($email); var_dump($resposta->statusCode()); var_dump($resposta->headers()); var_dump($resposta->body()); } catch (Exception $e) { var_dump( "Caught exception" . $e->getMessage()); } ```
COMENTE SOBRE