Fluent Mail API - um exemplo prático de Fluent Interface
6 respostas
guilherme.chapiewski
A Fluent Mail API é uma API simples que utiliza a JavaMail API da Sun para enviar e-mails. Meu objetivo não é criar mais uma ferramenta para envio de e-mails, é apenas demostrar o uso de Fluent Interfaces como wrapper de um framework maior, simplificando seu uso. A idéia é fazer com que enviar um e-mail seja tão fácil quanto isso:
new EmailMessage()
.from("[email removido]")
.to("[email removido]")
.withSubject("Fluent Mail API")
.withBody("Demo message")
.send();
Parabéns, Guilherme. Eu adoro fluent APIs, principalmente para configuração programática.
Uma idéia: crie um método que apenas dá um new EmailMessage e retorna o objeto. Daí vc pode fazer assim:
email().from("[email removido]").to("[email removido]").withSubject("Fluent Mail API").withBody("Demo message").send();
ou ainda:
email("[email removido]").from("[email removido]").withSubject("Fluent Mail API").withBody("Demo message").send();
Ruby na versão 1.9 está suportando fluent APIs. Na versão 1.8 não tinha como fazer isso, ou melhor, até tinha mas vc tinha que colocar tudo na mesma linha.
guilherme.chapiewski
Oi Saoj,
saoj:
Parabéns, Guilherme. Eu adoro fluent APIs, principalmente para configuração programática.
Uma idéia: crie um método que apenas dá um new EmailMessage e retorna o objeto. Daí vc pode fazer assim:
email().from("[email removido]").to("[email removido]").withSubject("Fluent Mail API").withBody("Demo message").send();
ou ainda:
email("[email removido]").from("[email removido]").withSubject("Fluent Mail API").withBody("Demo message").send();
Ruby na versão 1.9 está suportando fluent APIs. Na versão 1.8 não tinha como fazer isso, ou melhor, até tinha mas vc tinha que colocar tudo na mesma linha.
Eu acho mais natural que no contexto do seu programa você queira dizer que vai enviar um e-mail falando “new email message to alguem…” do que “email to alguem”. A primeira opção me parece mais expressiva do que a segunda.
Outra coisa chata é que email() teria que ser um método da classe em que se está enviando o e-mail, ou então teria que ser um método estático de alguma outra classe para fazer um import static da vida. Não vejo a necessidade de um factory method neste caso, só faria se ele trouxesse benefícios de semêntica. Prefiro usar o construtor normal…
[ ]s, gc
guilherme.chapiewski
Nova versão no ar, agora usando var args (porque não pensei nisso antes?)
B
brunim22
Olá,
gostaria de fazer uma pergunta. Estou utilizando a fluent-mail-api, mas estou tendo um problema quando envio o e-mail via HTML, e no texto desses e-mails possui acentos ou caracteres especiais. Tem alguma solução fácil ou a api não está preparada para isso?
Se ainda puder responder… pq faz tempo esse post aqui…