Grails: Enviando e-mails de uma forma REALMENTE simples
Enviar e-mails usando Grails pode ser uma tarefa muito chata. Sim, temos o plugin mail , com o qual muitas pessoas enfrentam dificuldades (e outra: é uma alternativa útil somente dentro do ambiente Grails). Outra possibilidade consiste em usar os wrappers que o próprio Spring nos oferece para lidar com o problema, porém a tarefa continua sendo, ao menos na minha opinião, complexa DEMAIS para algo que deveria ser simples (aliás, se quiser tornar o processo realmente infernal, experimente usar a API Java Mail).
Visto que as aplicações que crio em Grails nem sempre possuem sua lógica de negócios implementada em Groovy, precisava de uma solução que pudesse fácilmente implementar usando Java puro. A solução que encontrei é o Commons E-mail que, como o próprio nome já diz, consiste em um subcomponente da excelente biblioteca Commons da Apache.
Para ilustrar o uso deste bichinho, segue abaixo um serviço extremamente simples que implementei:
import org.apache.commons.mail.SimpleEmail
class MailService {
boolean transactional = false
// Inclui as configurações do serviço no próprio serviço apenas por comodidade para este post
String host= "mail.itasks.com.br"
String username = "seu_user_name_aqui"
String password = "senhaquente"
String from = "eu@eu.com"
Integer port = 465
def send(String subject, String msg, String to) {
//SimpleEmail é a nossa classe heróica
SimpleEmail email = new SimpleEmail()
email.setHostName(host)
email.addTo(to)
email.setFrom(from)
email.setSubject(subject)
email.setMsg(msg)
//Precisando de autenticação, ESTE é o método
email.setAuthentication(username,password)
// Caso precise definir a porta do seu servidor smtp
email.setSmtpPort(port)
// e isto faz todo o trabalho pra você :)
email.send()
}
}
Reparou na simplicidade do código? Não precisei me preocupar com sessões, mimetypes, nada! Apenas as configurações básicas do seu servidor SMTP e da mensagem que você pretende enviar.
Dependência
A única dependência do componente consiste no JAF, que é um arquivo de menos de 300kb que pode ser baixado em http://java.sun.com/javase/technologies/desktop/javabeans/jaf/index.jsp
Site do projeto: http://commons.apache.org/email/
Leave a Reply
Dec 17th 2009 • 14:12
by Renato dos Santos
Boa tarde, estou utilizando este código que vc postou, realmente é uma forma muito simples de envio de email.
No meu caso utilizo um servidor linux que envia estes emails, mas em alguns gerenciadores de email os acentos são trocados por ‘?’ ou simplesmente caracteres especiais são ignorados. Este problema é de configuração do gerenciador de email de cada maquina ou precisa ser setado algum parametro no envio para que seja respeitado caracteres especiais? Valeu…
Reply
admin Reply:
December 17th, 2009 at 23:59
No caso, o problema está no cliente,que deve estar configurado com alguma outra codificação diferente da que você está usando para enviar sua mensagem.
Reply