Create & Read Email Files Utilities

Use Case Details

This Plug-in contains Functions and Smart Services that allow users to create and read email files containing all e-mail attributes, i.e. to, cc, bcc, from, subject, body, content type, and attachments. The generated file can be read by any email client that supports EML files, such as Outlook Express and Windows Live Mail. The Plug-in and a help guide are provided with this listing.

This version is for Appian 22.3 and above. Cloud customers on a lower version of Appian that want to install this plugin should open a support case. Self-managed customers can find the latest jar for Appian 22.2 and lower version by downloading from the app market.

Features & Functionality

Smart Services:

  • Creating EML File: Create Eml File
  • Reading EML File: Read Eml File

Features:

  • Creates Email files/documents that can be read on all email clients supporting eml files.
  • Reads all email files to extract all email-related attributes such as to, cc, bcc, subject, body, attachments, content type.
Anonymous
Parents


  • Hi Michael,

    Thanks for upgrading the plug-in to the Jakarta library.

    After the Appian version upgraded to 22.3; I upgraded this plug-in to the 2.0.0 version.
    And 'Create Email File' service does not work and throws the following error: jakarta.mail.MessagingException: MIME part of type "multipart/mixed; " contains object of type java.lang.String instead of MimeMultipart

    Please assist.


    Here is detailed logs:

    UnattendedJavaActivityRequest] ERROR com.appiancorp.process.engine.UnattendedJavaActivityRequest - An error occurred while executing activity: id=268552939, classname=com.appcino.plugin.emlutility.smartservice.CreateEmlFile
    java.lang.RuntimeException: jakarta.mail.MessagingException: MIME part of type "multipart/mixed; " contains object of type java.lang.String instead of MimeMultipart
    	at com.appcino.plugin.emlutility.utils.EmlUtils.createEmlDocument(EmlUtils.java:147)
    	at com.appcino.plugin.emlutility.smartservice.CreateEmlFile.run(CreateEmlFile.java:48)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.lambda$call$0(DefaultActivityExecutor.java:136)
    	at com.appiancorp.plugins.PluginUsageLogger.runWithPluginInformation(PluginUsageLogger.java:52)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.call(DefaultActivityExecutor.java:136)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.call(DefaultActivityExecutor.java:130)
    	at com.appiancorp.common.ContextClassLoaderSwitcher.runInContext(ContextClassLoaderSwitcher.java:27)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor.execute(DefaultActivityExecutor.java:130)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute(UnattendedJavaActivityRequest.java:88)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequestResponseCreator.getJavaActivityResultResponse(UnattendedJavaActivityRequestResponseCreator.java:21)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequest.getJavaActivityResultResponse(UnattendedJavaActivityRequest.java:67)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute0(UnattendedJavaActivityRequest.java:55)
    	at com.appiancorp.common.persistence.data.AppianDataUserContextProvider.executeWithConsistentDataReads(AppianDataUserContextProvider.java:143)
    	at com.appiancorp.process.engine.ProcessContinuationRequest.executeOuter(ProcessContinuationRequest.java:68)
    	at com.appiancorp.process.engine.ContinuationRequest.execute(ContinuationRequest.java:129)
    	at com.appiancorp.process.workpoller.UnattendedRequestHandlerBean.onMessage(UnattendedRequestHandlerBean.java:36)
    	at com.appiancorp.process.workpoller.WorkItem.run(WorkItem.java:110)
    	at org.springframework.jca.work.SimpleTaskWorkManager$DelegatingWorkAdapter.run(SimpleTaskWorkManager.java:239)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    	at java.lang.Thread.run(Thread.java:750)
    Caused by: jakarta.mail.MessagingException: MIME part of type "multipart/mixed; " contains object of type java.lang.String instead of MimeMultipart
    	at jakarta.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1513)
    	at jakarta.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2246)
    	at jakarta.mail.internet.MimeMessage.saveChanges(MimeMessage.java:2206)
    	at jakarta.mail.internet.MimeMessage.writeTo(MimeMessage.java:1885)
    	at jakarta.mail.internet.MimeMessage.writeTo(MimeMessage.java:1862)
    	at com.appcino.plugin.emlutility.utils.EmlUtils.createEmlDocument(EmlUtils.java:118)
Comment


  • Hi Michael,

    Thanks for upgrading the plug-in to the Jakarta library.

    After the Appian version upgraded to 22.3; I upgraded this plug-in to the 2.0.0 version.
    And 'Create Email File' service does not work and throws the following error: jakarta.mail.MessagingException: MIME part of type "multipart/mixed; " contains object of type java.lang.String instead of MimeMultipart

    Please assist.


    Here is detailed logs:

    UnattendedJavaActivityRequest] ERROR com.appiancorp.process.engine.UnattendedJavaActivityRequest - An error occurred while executing activity: id=268552939, classname=com.appcino.plugin.emlutility.smartservice.CreateEmlFile
    java.lang.RuntimeException: jakarta.mail.MessagingException: MIME part of type "multipart/mixed; " contains object of type java.lang.String instead of MimeMultipart
    	at com.appcino.plugin.emlutility.utils.EmlUtils.createEmlDocument(EmlUtils.java:147)
    	at com.appcino.plugin.emlutility.smartservice.CreateEmlFile.run(CreateEmlFile.java:48)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.lambda$call$0(DefaultActivityExecutor.java:136)
    	at com.appiancorp.plugins.PluginUsageLogger.runWithPluginInformation(PluginUsageLogger.java:52)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.call(DefaultActivityExecutor.java:136)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.call(DefaultActivityExecutor.java:130)
    	at com.appiancorp.common.ContextClassLoaderSwitcher.runInContext(ContextClassLoaderSwitcher.java:27)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor.execute(DefaultActivityExecutor.java:130)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute(UnattendedJavaActivityRequest.java:88)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequestResponseCreator.getJavaActivityResultResponse(UnattendedJavaActivityRequestResponseCreator.java:21)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequest.getJavaActivityResultResponse(UnattendedJavaActivityRequest.java:67)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute0(UnattendedJavaActivityRequest.java:55)
    	at com.appiancorp.common.persistence.data.AppianDataUserContextProvider.executeWithConsistentDataReads(AppianDataUserContextProvider.java:143)
    	at com.appiancorp.process.engine.ProcessContinuationRequest.executeOuter(ProcessContinuationRequest.java:68)
    	at com.appiancorp.process.engine.ContinuationRequest.execute(ContinuationRequest.java:129)
    	at com.appiancorp.process.workpoller.UnattendedRequestHandlerBean.onMessage(UnattendedRequestHandlerBean.java:36)
    	at com.appiancorp.process.workpoller.WorkItem.run(WorkItem.java:110)
    	at org.springframework.jca.work.SimpleTaskWorkManager$DelegatingWorkAdapter.run(SimpleTaskWorkManager.java:239)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    	at java.lang.Thread.run(Thread.java:750)
    Caused by: jakarta.mail.MessagingException: MIME part of type "multipart/mixed; " contains object of type java.lang.String instead of MimeMultipart
    	at jakarta.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1513)
    	at jakarta.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2246)
    	at jakarta.mail.internet.MimeMessage.saveChanges(MimeMessage.java:2206)
    	at jakarta.mail.internet.MimeMessage.writeTo(MimeMessage.java:1885)
    	at jakarta.mail.internet.MimeMessage.writeTo(MimeMessage.java:1862)
    	at com.appcino.plugin.emlutility.utils.EmlUtils.createEmlDocument(EmlUtils.java:118)
Children
  • Hello Arpit Pipersaniya, 

    I have the same issue that you say in your reply. Have you found any solution to that "There was an error creating the note" exception?

    Dhanyavaad.

  • Hi Arpit.

    Does the log have more details about the error?

    The error that you sent before (CreateEmlFileOOTB.setMaxSubjectLength) could be may be because you don't have any value for 'Max Subject Lengh' or the subject length of your eml file is grater than this value?

    Another topic, it´s not mandatory, but you have to set the node attribute 'Avoid Txt Alternative' true or false.

    Check it and tell.

    BR.


  • Also, it appears that input nodes that are not mandatory if no value is passed then throw the error. For instance, Max Subject Length:

    Caused by: java.lang.NullPointerException
    	at com.appcino.plugin.emlutility.smartservice.CreateEmlFileOOTB.setMaxSubjectLength(CreateEmlFileOOTB.java:143)


  • Thank you for your time and response.

    Yes, after realizing that I replaced it with a new node available named 'Create Eml File from OOTB Poller'
    Then it throws the following error:

    An error occurred while executing activity: id=537021359, classname=com.appcino.plugin.emlutility.smartservice.CreateEmlFileOOTB com.appiancorp.suiteapi.process.exceptions.SmartServiceException: An error occurred while creating the note.

    Please check my reply to another comment.
    And please help if you can.

  • Hi Arpit.

    I think you have the value "multipart/mixed; " setted in your node input variable 'Content Type'.

    I saw the following in javax doc:

    So I think you should try to execute the node with "" value in your node input variable 'Content Type'.