Poll Email from Microsoft Exchange EWS API

Overview

This plugin provides an alternative to sending emails to an Appian process model when inbound email integration is requested. Instead of the email being forwarded to Appian, this plugin reads the emails directly from the Exchange mailbox using the EWS web services API.

Deployment Instructions

  • Deploy the plugin through the admin console of your Appian Cloud site or by copying the plugin zip file to the plugins folder
  • Download the component from the App Market. The zip file "EWS Mail Poller applications.zip" contains sample applications for use with the plugin
  • Use the application, scripts, or XSDs that correspond to your database
  • Configure a Third Party Credentials entry in the admin console with the following parameters:
    • username: email identifier of the mailbox to poll. This is usually the part of the email address coming before the '@' character, but depending on the Exchange server may instead be the entire email address or domain\EmailAddress
    • password: password to access the mailbox
    • proxyUsername (or proxyusername) : username of the proxy account
    • proxyPassword (or proxypassword) : password of the proxy account

Key Features & Functionality

Smart service "EWS Mail Poller To DB":

  • Reads the mailbox using the EWS web service API
  • Convert the email to an EWM file stored as an Appian document
  • Store all email attachments as Appian documents
  • Store all email metadata (subject, author, recipients, etc...) into a set of tables in the database

To use this plug-in:

  • Create a process model to invoke the plugin on a schedule basis like every few minutes
  • Configure a Secure Credential Store with the following attributes
  • Configure the smart service plugin with the required inputs including the name of the Secured Credential Store created above

By default, the emails successfully processed are moved to the folder Deleted Items and the emails that cannot be processed are moved to the folder Junk E-mails.

Anonymous
Parents
  • Installed this plugin and configured it successfully to poll and read emails without attachment. But when there is an attachment in the email the sample process returns error - Invalid column name 'INLINE_ID'.

    I have used the MS SQL version of application. Any help is appreciated.

    Log details:

    2021-08-06 17:04:20,460 [Appian Work Item - 142 - execution02 : UnattendedJavaActivityRequest] ERROR com.appiancorp.ps.mail.MessageHandler - Error during email processing
    com.microsoft.sqlserver.jdbc.SQLServerException: Invalid column name 'INLINE_ID'.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:254)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1608)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:578)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:508)
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7240)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2869)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:243)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:218)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(SQLServerPreparedStatement.java:461)
    at sun.reflect.GeneratedMethodAccessor819.invoke(Unknown Source)

  • I was able to figure it out. This version of plugin 1.0.23 expects a DB columns which isn't provided by the Application which is provided with plugin, but it's easy to add by running below script.

    ALTER TABLE [dbo].[APP_MAIL_POLLER_DOC]
    ADD INLINE_ID int,
    DISPOSITION nvarchar(2000);

    For those who are looking to figure out configurations. these are the steps to follow after the sample application is installed:

    Update the table APP_MAIL_POLLER_DOC

    ALTER TABLE [dbo].[APP_MAIL_POLLER_DOC]

    ADD INLINE_ID int,

    DISPOSITION nvarchar(2000);

    1. Create Secure Credential Store: ewsmailpollerscs with fields username and password and include plugin EWS Mail Poller. Username should contain complete email address including @xxx.com
    2. Update Properties in APP Poll Mail From Mailbox Process Model

    Service URL: https://outlook.xxxx.com/EWS/Exchange.asmx

    Domain: provide your domain like xxx.com

    Jndi Name: change with your DB Jndi available in Data Store

    Exception Folder Name: Junk Email

    Processed Folder Name: Deleted Items

Comment
  • I was able to figure it out. This version of plugin 1.0.23 expects a DB columns which isn't provided by the Application which is provided with plugin, but it's easy to add by running below script.

    ALTER TABLE [dbo].[APP_MAIL_POLLER_DOC]
    ADD INLINE_ID int,
    DISPOSITION nvarchar(2000);

    For those who are looking to figure out configurations. these are the steps to follow after the sample application is installed:

    Update the table APP_MAIL_POLLER_DOC

    ALTER TABLE [dbo].[APP_MAIL_POLLER_DOC]

    ADD INLINE_ID int,

    DISPOSITION nvarchar(2000);

    1. Create Secure Credential Store: ewsmailpollerscs with fields username and password and include plugin EWS Mail Poller. Username should contain complete email address including @xxx.com
    2. Update Properties in APP Poll Mail From Mailbox Process Model

    Service URL: https://outlook.xxxx.com/EWS/Exchange.asmx

    Domain: provide your domain like xxx.com

    Jndi Name: change with your DB Jndi available in Data Store

    Exception Folder Name: Junk Email

    Processed Folder Name: Deleted Items

Children
No Data