Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

email attachment thorough a process

Avatar

Level 2

Hi,

I have a process that is supposed to create a zip file of pdfs on the server and email it as an attachment. This process is not working totally as expected. It creates a zip file, but is not able to send the email. This is how it has been implemented:

- The java code sends a map that contains all the values required to send the email- From Address, To Address, Subject, Attachment Name.

- The Livecycle process accesses the map and uses the values as the parameter to the Email service in form of Xpath expression,

     for eg, /process_data/EmailOptions[@id='ToAdd'] where

          -EmailOptions is the map passed by the java code as a parameter

          -ToAdd is the Key name for the value of To Address

Issue are-

1. I am not sure if i am accessing the map in the correct way as shown above.

2. How should I specify the zip file (already created on the server) to the Email Service.

Thanks,

Tushar

1 Accepted Solution

Avatar

Correct answer by
Former Community Member

The expression you are using to access the ToAdd seems right to me .....that parameter is expecting a string is it possible that you are pssing in a map of something other than strings? Can you assign the ToAdd to a string variable and see if it populates (use the record and playback to see this)

The zip file will need to be put into a dicument variable before you can attach it to the email service. If you know its location you can use the Read Document operation to get it from the file system inot a Doc var.

Hope that helps

Paul

View solution in original post

9 Replies

Avatar

Correct answer by
Former Community Member

The expression you are using to access the ToAdd seems right to me .....that parameter is expecting a string is it possible that you are pssing in a map of something other than strings? Can you assign the ToAdd to a string variable and see if it populates (use the record and playback to see this)

The zip file will need to be put into a dicument variable before you can attach it to the email service. If you know its location you can use the Read Document operation to get it from the file system inot a Doc var.

Hope that helps

Paul

Avatar

Level 2

Thanks a lot Paul. That worked!

I am now facing a new issue. I didn't check it earlier but now it grabbed my attention. The ZIP file that gets created, its covering the whole path of the system where the folder resides rather than the folder itself. This might pose as a security issue where our directory structure on the server may get revealed when the file is unzipped. The folder that we are trying to zip is actually created dynamically as below:

1. unzip the xml file documents sent to the server.

2. create the pdf document for each file in a folder- this gets stored in a variable CurrentDirectory.

3. Zip the CurrentDirectoy.

Now the zip folder has the complete directory structure starting with system root. Any workaround for this?

Avatar

Former Community Member

Whether to include the folder structure in the zip or not is a parameter in the zip software ....you shodul be able to control that when you createthe zip ...No?

Paul

Avatar

Level 2

We are using the ZipFolder service from livecycle for zipping the current folder. Does livecycle use the Zip software installed on the server? I however cant find the option in winzip for hiding the folder structure.

Tushar

Avatar

Former Community Member

I do not have a zipfolder service .....is this something you got from a 3rd party or a service that someone created for you? It may be that they did not expose that option....you woudl have to talk to the creator of that service.

Paul

Avatar

Level 2

Hey Paul,

I found the custom service its using. I will now look into how to hide the folder structure. Thanks for the help.

Avatar

Level 2

Hey Paul,

The component used for zipping was a JAVA program. I modified it to hide the folder structure by adding a new boolean parameter. I am now trying to update the current component but the new parameter is not coming up in LiveCycle. I even modified the component.xml before creating the jar for the component. The xml file has to be updated manually or is there some other tool in LiveCycle that does that? The steps I followed to update the component are:

1. Stop the component from the Component Explorer.

2. Used the Apply Patch option to select the new jar for the component.

3. Started the component.

4. Removed and added the ZipFolder component in the service that was using it.

Did I miss any step?

Tushar

Avatar

Former Community Member

You will have to stop the current component. then uninstall it, then inistall your new one. This shoudl be done in workbench. Open the Components view and fnd your component in the list. Right click on it and ther you can stop, and uninstall it. The omn the root of the components view you can right click and instal your new component.

Hope that helps

Paul

Avatar

Level 2

Hey Paul,

Thanks, uninstalling and installing worked. If you dont mind I have 1 more question- if I want to send my process files to another developer, what all files are needed, for eg, for forms, only the .xdp files are enough. Is the .process file enough for the other developer to work on the process or would he need even the .process_dependency?

Tushar

The following has evaluated to null or missing: ==> liqladmin("SELECT id, value FROM metrics WHERE id = 'net_accepted_solutions' and user.id = '${acceptedAnswer.author.id}'").data.items [in template "analytics-container" at line 83, column 41] ---- Tip: It's the step after the last dot that caused this error, not those before it. ---- Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign answerAuthorNetSolutions = li... [in template "analytics-container" at line 83, column 5] ----