Find file
Fetching contributors…
Cannot retrieve contributors at this time
65 lines (53 sloc) 4.57 KB

Mailee - Email marketing para quem entende de tecnologia.

O problema

Você está desenvolvendo um sistema (e-commerce, cms, erp...) e o seu cliente solicita a possibilidade de enviar e-mails promocionais, ou notícias, para diversos contatos. Por experiência própria, você sabe que enviar e-mails não é coisa para _scriptkiddies_, e que, de fato, não vale a pena o esforço de desenvolver todo um sistema que faça o envio, garanta a entrega, analise os retornos e também apresente resultados de tudo isso. O problema é que os sistemas que você conhece não permitem uma integração fácil e rápida com seus sistemas em Rails...

A solução

Este plugin tem como objetivo manter os contatos da sua aplicação sincronizados com os contatos do Mailee (www.mailee.me) sem muito esforço. De fato, basta executar o método "sync_with_mailee" no seu modelo (clientes, contatos, pessoas...) que este irá automaticamente realizar as tarefas de inserir, atualizar, excluir e descadastrar via REST. No Mailee, seu cliente poderá então montar as mensagens e enviar para os contatos.

Instalação

* Execute o seguinte comando em sua aplicação Rails:
> script/plugin install git@github.com:softa/mailee-api.git
* Adicione a seguinte linha de configuração em sua aplicação:
Mailee::Config.site = 'http://api.chave.subdominio.wizee.net'
O site você descobre entrando no Mailee e indo em Configurações > Integração > REST

Pronto!

Uso

* Na mão (console)
Você pode usar a api do maile "na mão". Basta abrir o console e usar:
> ruby script/console
>> Contact.find(:all)
>> Contact.find(:first)
>> Contact.create(:name => 'Bertrand Russell', :email => 'russell@cambridge.edu.uk')
Mais exemplos você encontra(rá) na (futura) documentação da API.
* Com modelos (ActiveRecord)
Este plugin é feito para manter um modelo AciveRecord sincronizado com os contatos do Mailee. Para fazer isto, basta colocar o método "sync_with_mailee" em seu modelo. Se o seu modelo se chama "Contact", por exemplo, o código seria este:
=code
  class Contact < ActiveRecord::Base
    sync_with_mailee
  end
A priori, o plugin espera que você tenha pelo menos um campo de email e pressupõe que o nome deste campo é "email". Se o campo da sua tabela não tem este nome, você pode fazer o seguinte:
=code
  class Contact < ActiveRecord::Base
    sync_with_mailee :email => :my_email_column
  end
Onde "my_email_column" é a coluna que guarda o e-mail na sua tabela.
O plugin também pode manter o nome do seu contato sincronizado, bastando para isto ter um campo "name" que será mapeado por padrão, mas que também pode ser sobrescrito:
=code
  class Contact < ActiveRecord::Base
    sync_with_mailee :email => :my_email_column, :name => :my_name_column
  end  
Por fim, o plugin permite que o cadastro no Mailee seja condicionado a um campo booleano (o padrão é "news"), que corresponde ao "opt-in" (a escolha de receber ou não mensagens) do seu contato. Ou seja, se o valor do campo for false, o plugin não cadastrará o contato no Mailee, e se o contato já estiver cadastrado e o valor deste campo mudar para falso, o contato será descadastrado e _não_ poderá ser mais cadastrado no Mailee (normas de privacidade). Para mudar o campo, basta:
=code
  class Contact < ActiveRecord::Base
    sync_with_mailee :email => :my_email_column, :name => :my_name_column, :news => :do_you_really_accept_to_receive_our_newsletter
  end  
* Tarefas (rake)
Caso você já tenha itens cadastrados, é necessário adicionar estes contatos ao Mailee antes de mais nada. Para isso execute a tarefa rake:
> rake mailee:send CLASS=Contact
Onde "Contact" é o nome do seu modelo. Se você quer apenas enviar os contatos a partir de uma determinada data, você pode fazê-lo desta forma:
> rake mailee:send CLASS=Contact AFTER=5.days.ago
Neste caso, ele vai apenas sincronizar os contatos que foram atualizados (baseado no campo "updated_at") nos últimos 5 dias.  
* Mas... como isso funciona, caso eu precise saber?
O plugin utiliza a API REST do Mailee para enviar dados, por isto cuide bem da sua URL - se alguém descobrir isso pode ser ruim. Para saber qual o contato na sua aplicação o plugin utiliza um campo disponível no Mailee chamado "internal_id" o qual recebe o "id" da sua tabela na criação. Este id é usado nas atualizações, descadastros e exclusões, então tome (ou avise seu cliente para tomar!) cuidado ao editar este campo na interface do Mailee.

Dúvidas?

Qualquer dúvida, não hesite em falar conosco pelo e-mail suporte@mailee.me.