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/
Deixe uma resposta