CakePHP + Amazon SES

Há algum tempo a Amazon lançou um serviço muito interessante relacionado ao envio de e-mail em grande escala com um custo bem baixo. Este serviço chamado Amazon SES fornece uma boa API para envio de e-mails.

Um dos frameworks que mais utilizo em minha rotina de trabalho é o CakePHP, um ótimo framework MVC escrito em PHP.

O CakePHP possui um componente para envio de e-mails sobre a função mail do PHP ou por SMTP.

Como estava querendo testar o serviço da AWS de envio de e-mails resolvi criar uma solução compatível com o CakePHP.

Criei um novo componente que estende o EmailComponent chamado EmailServiceComponent para ter as habilidades de operar com o Amazon SES.

O código fonte deste componente pode ser baixado no projeto que crie no GitHub, clicando aqui.

Como utilizar:

Primeiro devemos baixar o Amazon SDK PHP, neste link.

Descompacte o arquivo na pasta vendors de sua aplicação, e renomeie a pasta principal da SDK para aws-sdk.

Logo após renomeie o arquivo config-sample.inc.php para config.inc.php e insira suas credenciais de acesso nele.

Uma vez a SDK estando configurada e devidamente colocada em seu projeto, baixe o EmailServiceComponent disponível aqui e coloque em sua pasta controllers/components.

Quando for necessário enviar um e-mail usando o Amazon SES basta carregar o componente no controller:

var $components = array('EmailService');

E habilitar o aws_ses como função padrão para envio de e-mails:

$this->EmailService->delivery = 'aws_ses'; // ou 'aws_ses_raw' se você desejar enviar um e-mail complexo ou com anexos...

Depois disso é só seguir o procedimento padrão de envio de e-mails do Cake, só lembrando de sempre usar EmailService ao invés de Email.

Se tiverem dúvidas deixem no espaço de comentários deste post.

7 ideias sobre “CakePHP + Amazon SES

  1. Pingback: Sending e-mails the efficient way using Amazon SES and CakePHP | Viorel Sfetea

  2. Pingback: Trimite e-mail-uri eficient cu Amazon SES si CakePHP | Viorel Sfetea

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *