Injeção de imagens em templates de e-mail - Plugin Grails Mail
-
Em alguns contextos pode ser necessário enviar e-mails fazendo uso de templates .gsp e que contenham imagens dentro de tags <img>.
Porém, neste modelo de envio de mensagens, a injeção de conteúdo estático oriundo de web-apps/ é um pouco diferente.
Passo a passo:
O método responsável por enviar a mensagem deve ser do tipo multipart true. Essa propriedade deve ser declarada por primeiro na Clouse do método.
Abaixo da injeção da propriedade html deve ser incluído cada uma das imagens a serem utilizadas no conteúdo da mensagem.
Isso é feito através da propriedade inline, seguida pelo nome, mimetype e arquivo a ser usado.... this.mailService.sendMail { multipart true to getTo() if (getCc()) { cc getCc() } subject getSubject() html getGroovyPageRenderer().render(template: getTemplate(), model: getModel()) inline 'nomeQualquer', 'image/png', Holders.getGrailsApplication().mainContext.getResource("images/logo.png").getFile() } ...Feito isso, agora é necessário inserir o link desse recurso dentro da tag <img>:
... <img src="cid:nomeQualquer"> ...Pronto, dessa forma a imagem é injetada no html da mensagem.
Essa abordagem é necessária por conta da maneira como o plugin cria o conteúdo do email.
Páginas e templates .gsp padrões do Grails (página index.gsp por exemplo) podem conter a injeção da imagem diretamente na tag <img>, com o src apontando para o diretório do projeto contendo o recurso.