Email template with attachment

Hola, estoy intentando enviar un email con un fichero adjunto, para ello utilizo el plugin Email Template, el problema que tengo es que el email se envía correctamente pero el fichero adjunto nose envía con el email. Adjunto el código:

public void envioEmail(String nombreEmpleado, String puesto, String para, String copia, String copiaOculta, String asunto, String texto, List<AdjuntoEmail> adjuntoEmailList) throws TemplateNotFoundException, ReportParameterTypeChangedException {
        //EmailAttachment emailAttachment = new EmailAttachment(((AdjuntoEmail)adjuntoEmailList.get(0)).getArchivo().getName().getBytes(), ((AdjuntoEmail)adjuntoEmailList.get(0)).getArchivo().getName());

        List<FileDescriptor> fileDescriptorList = new ArrayList<>();
        for (AdjuntoEmail adjuntoEmail : adjuntoEmailList) {
            fileDescriptorList.add(adjuntoEmail.getArchivo());
        }

                //adjuntoEmailList.stream().map(AdjuntoEmail::getArchivo).collect(Collectors.toList());


        emailTemplatesAPI.buildFromTemplate("email")
                .setTo(para)
                .setCc(copia)
                .setBcc(copiaOculta)
                .setSubject(asunto)
                .setAttachmentFiles(fileDescriptorList)
                .setBodyParameter("nombre", nombreEmpleado)
                .setBodyParameter("puesto", puesto)
                .setBodyParameter("contenido", texto)
                .setFrom(null)
                .sendEmailAsync();

Thanks.

Hi.

Could you please clarify which platform version do you use?

Regards,
Nadezhda.

Hi, sorry for writing in Spanish, I didn’t realize it.The platform is 7.2.11 cuba studio 2020.2 and the plugin email templates is 1.4.2
Thanks and greetings.

Hi.

Unfortunately, we cannot reproduce the problem. In my case files were successfully received:
image

We will be able to help you if you send us a small sample project along with a reproduction scenario that demonstrates the issue.

Regards,
Nadezhda.

Hi, thanks for replying, my project is quite big and it’s difficult to upload it, I think I’m getting the wrong way to use “EmailTemplatesApi”. My situation is that I use a “FileUpload” component to upload a file, this I store it in a “not persistent” class like the one below:

public class AdjuntoEmail extends EntidadBase {
    private static final long serialVersionUID = 1909485771923373349L;

    @MetaProperty
    private FileDescriptor archivo;

    public FileDescriptor getArchivo() {
        return archivo;
    }
    public void setArchivo(FileDescriptor archivo) {
        this.archivo = archivo;
    }
}
´´´
Then I use the following code to send the email, extracting the "FileDescriptor" type field from the class:
´´´
public void envioEmail(String nombreEmpleado, String puesto, String organizacion, String para, String copia, String copiaOculta, String asunto, String texto, List<AdjuntoEmail> adjuntoEmailList) throws TemplateNotFoundException, ReportParameterTypeChangedException {
        //genero los adjuntos en un array
        //List<EmailAttachment> emailAttachments = new ArrayList<>();
        //for (AdjuntoEmail adjuntoEmail : adjuntoEmailList) {
        //    emailAttachments.add(new EmailAttachment(((AdjuntoEmail)adjuntoEmailList.get(0)).getArchivo().getName().getBytes(), ((AdjuntoEmail)adjuntoEmailList.get(0)).getArchivo().getName()));
        //}

        FileDescriptor fileDescriptor = adjuntoEmailList.get(0).getArchivo();
        List<FileDescriptor> fileDescriptorList = new ArrayList<FileDescriptor>();
        fileDescriptorList.add(fileDescriptor);

        emailTemplatesAPI.buildFromTemplate("email")
                .setTo(para)
                .setCc(copia)
                .setBcc(copiaOculta)
                .setSubject(asunto)
                .setBodyParameter("puesto", puesto)
                .setBodyParameter("contenido", texto)
                .setBodyParameter("organizacion", organizacion)
                .setFrom(null)
                .setAttachmentFiles(fileDescriptorList)
                .sendEmailAsync();
´´´
The email arrives perfectly, but without attachment, any idea what I do wrong?
Thanks and best regards.

Problem occurs due using non persistent class which doesn’t store your FileDescriptor.

You should save FileDescriptor files with using DataManager, here is an example how it could be implemented in MyEntityEdit.class:

    @Inject
    protected DataManager dataManager;
    @Subscribe
    public void onBeforeCommitChanges(BeforeCommitChangesEvent event){
        UUID fileId = getEditedEntity().getFile().getId();
        dataManager.commit(getEditedEntity().getFile());
    }

After that if you need to get this FileDescriptor you should load instance by id and use as email attachment.

Regards,
Nadezhda.

Perfect !!!, thanks.