Imagem "embed" (embutida) no corpo de e-mail

Bom dia pessoal!

Estou usando o RichText do Fluig para ser tipo um e-mail, que será enviada para um destinatário externo (que não usa Fluig) e precisa ter imagens embutidas nele, imagens que o usuário vai fazer o upload quando estiver preenchendo, já escrevi um plugin para o editor para fazer o upload da imagem e pegar a URL publica do documento, porém, não renderiza a imagem no e-mail :frowning: , alguma ideia de como resolver isso? Aaaah, tentei encodar como base64 mas ao salvar estoura o limite de caracteres do textarea :sob:

Eu fiz com base64, mas não gravei em textarea, usei a API do fluig que devolve a base64 e enviei direto pro template de envio. Você só precisa ter essa imagem no GED do Fluig para ele localizar e transformar em base64.

Poderia me dar um exemplo @Willian_Laynes? Como eu vou passar o conteúdo do RichText para o backend para ser feito o envio?

Eu fiz para a questão da imagem, o seu problema é o que foi digitado no richtext ou a imagem? Para eu verificar se consigo ajudar.
Eu uso esse serviço SOAP para buscar a base64 e enviar no e-mail

ECMDocumentService-getDocumentContent

O que vc pode fazer e gravar em um arquivo .txt e ler ele no back-end para enviar, só faz um controle do documentId para poder localizar o documento.

Meu problema é que o RichText eu salvo, até pra eu ter o registro, o problema é a imagem embutida no RichText, saca? Como eu poderia inserir o id do documento no RichText e depois fazer o replace no backend? Eu até insiro, mas o problema é o replace depois no backend

ECMDocumentService-getDocumentContent.js (5,5,KB)

Exemplo de dataset.

1 curtida

Entendi o que vc quis dizer.

No caso esse seria um trecho que precisaria trocar:

<img alt="Excel" src="https://meu-fluig/volume/stream/Rmx1aWc=/P3Q9MSZ2b2w9RGVmYXVsdCZpZD0xMDQ1JnZlcj0xMDAwJmZpbGU9JTVCMTYyMDgxNzI0NTAwNSU1RGltYWdlLnBuZyZjcmM9MTU4OTc5MTQwOCZzaXplPTAuMDAxNjU4JnVJZD0xMSZmU0lkPTEmdVNJZD0xJmQ9ZmFsc2UmdGtuPSZwdWJsaWNVcmw9ZmFsc2U=.jpg" style="width: 321px; height: 41px;" />

Como eu poderia trocar o link do src por um base64?

Uma ideia é uma API que te devolva a base64 desse link, você só teria que isolar esse trecho de código e substituir pelo retorno da API. Da um pouco de trabalho mas acredito que é possível.

Busca na string com o indexOf(‘src="’) e recorta até o proximo ’ " ', você vai ter o link de pois utiliza uma api pre devolver o base64 e cola no lugar.

Exemplo no front, tem que ver como fazer no backend agora.

Essa parece uma boa, vou tentar fazer um regex pra isso, porque pode conter mais de uma imagem

1 curtida

Mano do céu! O Fluig usa Jsoup!! Ficaria mais ou menos assim:

            var stringHtml = new java.lang.String(stringHtml);
            var doc = org.jsoup.Jsoup.parse(stringHtml);
            var imgs = doc.select("img[data-doc-id]").iterator(); // Só pega as imgs com id de documento

            while (imgs.hasNext()) {
                let img = imgs.next();
                // Recupera a imagem e pega o base64 e seta abaixo no src
                img.attr('src', 'LINK_AKI')
            }
            var result = doc.toString();

Tá dando erro pra eu baixar:

Mesmo usando o Jsoup, encodando para base64 as imagens, os e-mails não renderizam base64… Tô lascado :sob:

Mas se vc pega o link da imagem em base que gerou e abre em um navegador ele consegue abrir a imagem?

Sim, mas pelo que li, Gmail, Outlook e uma pancada de clientes de e-mail não renderizam base64, precisa ser um link ou anexado ao e-mail, sem isso nada feito :cold_sweat:

Hoje mais cedo quando vi esse tópico ia comentar exatamente isso, mas achei que já sabia.
Eu tive uma necessidade dessa em um projeto, depois de muitos testes vi que não funcionava na maioria dos clientes de e-mail.

Eu poderia subir para algum repositório online como por exemplo o Firebase, mas a empresa tinha uma politica de segurança bem restrita, com isso, tivemos que abandonar essa ideia das imagens embutidas nos emails.

Vinny, é uma limitação do fórum que ainda estamos tentando contornar - tem um outro tópico sobre isso. Provisoriamente, zipem os .js ou colem direto no corpo da postagem! :smiley:

1 curtida

Infelizmente sem sucesso :sob:

Mas contornei pegando a URL pública do documento e colocando no src da imagem, e também coloquei logo abaixo um link que vai direto para o arquivo no Fluig caso a imagem não carregue, ficando mais ou menos assim:

var cartaStringHtml = new java.lang.String(campoRichText);
var doc = org.jsoup.Jsoup.parse(cartaStringHtml);
var imgs = doc.select("img[data-doc-id]").iterator();

while (imgs.hasNext()) {
	let img = imgs.next();
	img.attr('alt', "Clique no link abaixo para visualizar a imagem caso não carregue")
	img.append('<br><a target="_blank" href="' + img.attr('src') + '">Ver imagem</a>');
}

Esse é um trecho de como fica a imagem no RichText:

<img data-doc-id="{documentId}" src="{link retornado pelo '/2.0/documents/getDownloadURL/{idDoc}' }" />

Aí eu apendo um link depois da imagem caso ela não carregue, não é o melhoooooooor mas já é alguma coisa.

1 curtida

Este tópico foi fechado automaticamente 16 horas depois da úlima resposta. Novas respostas não são mais permitidas.