Integration Pack: Exchange Mail

Introduction

I have created an Exchange Mail Integration Pack for Opalis. This integration pack is built on the Microsoft.Exchange.Webservices (EWS) Managed API 1.1. As such it requires no additional dependencies. This project is hosted on Codeplex and is being released under the CDDL so feel free to take the code and modify / contribute! No warranties are given, either expressed or implied, look at the code and test it for yourself! The main purpose of this integration pack is mail manipulation (reading, searching, moving, deleting etc). This integration pack will work with Exchange 2007 SP1, Exchange 2010, and Exchange 2010 SP1.


http://opalisexchangemail.codeplex.com/

Objects

The project includes objects for the following actions

  • Delete Mail
  • Read Mail
  • Monitor Mailbox
  • Move Mail
  • Read Mail from Folder
  • Create Folder
  • Delete Folder
  • Empty Folder
  • Find Folder
  • Get Attachments
  • Send Email

Delete Mail

Inputs

  • Email ID: The id of the email you would like to delete. This can be found using the ‘Find Mail’ object. The Monitor Mailbox and Read Mail from Folders also return the ID of all email messages they return.
  • Delete Mode
    • Hard Delete
    • Soft Delete
    • Move to Deleted Items

Actions

  • Does a delete on the email

Find Mail

Inputs

  • Search Field (what email field would you like to search on)
    • Subject
    • From
  • Search Algorithm (what criteria you would like to match on)
    • Equals
    • Contains String
    • Does not Equal
  • Search String (the string you would like to search the select field for based on your selected algorithm)

Outputs

  • Attachments – Boolean, if there is an attachment or not
  • From
  • Subject
  • Body
  • ReceivedDate
  • ID – Unique exchange ID for this email. Use for passing to other workflows that need this

Monitor Mailbox

Inputs

  • Folder Name: The name of the folder in the mailbox you would like to monitor
  • Polling Interval: How often to poll your exchange server for new emails. I would suggest doing this no more often than every minute

Outputs

  • This monitor checks every defined interval for newly modified emails in the supplied folder and returns the following information
    • Body
    • From
    • Subject
    • Id
    • Received Date
    • Attachments
    • Number of Emails: The number of emails found

Move Mail

Inputs

  • Email ID: The id of the email you would like to delete. This can be found using the ‘Find Mail’ object. The Monitor Mailbox and Read Mail from Folders also return the ID of all email messages they return.
  • Destination Folder: The name of the folder you would like to move the email to.

Actions

  • Moves the Email ID to the Destination Folder

Read Mail

Inputs

  • Folder Name: The name of a specific folder in the mailbox to monitor.
  • Number of Emails: The maximum number of emails to return. (Optional Property, will return all mail in folder by default)

Outputs

  • This monitor will return the first X number of emails in the folder where X is the “Number of Emails” supplied in the input. The following information is returned
    • Body
    • From
    • Subject
    • Id
    • Received Date
    • Attachments
    • Number of Emails: The number of returned Emails

Get Attachments

Inputs

  • Email ID: The ID of the email to download the attachments from
  • Save Location: The location to save the file to. I suggest a network share. Must be somewhere your action servers can all access

Outputs

  • File Name: Name of the Attachment downloaded
  • File Location: Path to the file (Save location)

Actions

  • Downloads all attachments of a given email to the Save Location

Send Email

Inputs

Actions

  • Sends the email to the destination.

Find Folder

Inputs

  • Search Field
    • Folder Name
    • Folder ID
  • Search String

Outputs

  • Folder Name
  • Folder ID
  • Parent Folder ID

Create Folder

Inputs

  • Folder Name: Name of the new Folder
  • Parent Folder Name: Name of the folder you would like to put this folder under. Not required (defaults to inbox)
  • Parent Folder ID: The ID of the folder you would like to put this folder under. Overrides Parent Folder Name if both are present. Not required

Actions

  • Creates a new folder

Delete Folder

Inputs

  • Folder Name
  • Folder ID: Optional (Overrides Folder Name if present)

Actions

  • Deletes the first folder found matching Folder Name. If Folder ID was used deletes that specific folder

Empty Folder

Inputs

  • Folder Name
  • Folder ID: Optional (Overrides Folder Name if present)

Actions

  • Deletes all contents of the first folder found matching Folder Name. If Folder ID was used it deletes all contents of that specific folder
  • Very efficient if it is an Exchange 2010 SP1 mailbox (one action). Otherwise this loops and deletes all individual items one by one

Advertisements
Tagged with: , , , ,
Posted in Integration Pack
75 comments on “Integration Pack: Exchange Mail
  1. Scott says:

    Does Microsoft.Exchange.Webservices (EWS) Managed API 1.1. need to be installed on the exchange server, the opalis server??. I downloaded and installed the OIP, see the objects, but when I click on the … in the configuration section of the monitor mailbox I get nothing.

    • randorfer says:

      Hey Scott,

      You need to setup a mailbox configuration first. Go up to Opalis menu bar and click Options -> Exchange Mail and add a new mailbox configuration. Then when you use an object you will be able to select that mailbox configuration using the …

      • Scott says:

        Thanks – getting closer I think. I am getting this error.

        The Autodiscover service couldn’t be located when I use the Read Mail task.

        For the configuration what is the username, my networkid or my email address (i.e. scott.sisson@mydomain.com)
        For password I am using my network password
        For domain I am using mydomain.

      • Scott says:

        Finally got it. I used my network id & password, got the correct exchange version and then it all worked.

  2. Scott says:

    If you want to build another OIP – FTP would be useful. I hear the current FTP OIP from 6.2.2 is not available in 6.3. I use FTP a lot to push files around.

  3. Leandro Amore says:

    Hi scott, i am trying to use the get attachment feature with no luck. I placed a monitor mailbox and pass the ID of the incoming message to the get attachment task. But the attachment is always saved with 0 bytes.
    I tried changing the extension and content of the file with the same result. Any ideas?
    best regards

    Leandro

    • randorfer says:

      Hey Leandro,

      What version of the IP are you using? The most up to date version is v1.4. What version of exchange? The save location for the object should be a path to an existing folder that all attachments of the specified email will be downloaded to. Make sure that this path makes sense to your actions servers (network paths / shares are best). I just tested this with exchange 2007 sp1 and the latest version of the IP and had success.

    • Scott says:

      I did not do anything fancy. Like you did, I have a monitor mailbox (every 2 minutes) and use the email id property which is the “ID from Monitor mailbox) and save location is “c:\test\exchange”. I left the link from monitor mailbox to Get attachments at the default. Ultimately, I will add a condition to the link i.e. if attachments from monitor = true the get the attachment and then do something the attachment. The final work flow will be to move the email body & attachments to a sharepoint list based on the domain of the sender. Not sure if I need a seperate app to do this or if I can just use the web service task.

  4. M Dawood says:

    Hi Guys,

    What do i need to configure this pack in Opalis. I installedd the pack but it keeps stopping when i create a Monitor Mailbox Policy.

    What do i need to install on teh Opalis Server.

    Do i need to isntall the Exchange Client ?

    Please help.

    MD

    • Scott says:

      randorfer response on
      March 10, 2011 at 4:16 pm
      above. I think I was having the same issue prior to this. I think you need to have a value in the configuration box of the task.

  5. Marc says:

    Hello,
    i have configured the settings “Options”->”Exchange”.
    Username : windows Username
    Password and Domain (Netbios Domain Name).
    Also selceted Exchange 2010SP1.

    After that created policy. I get an error by “Read Mail”, see below.

    I have tested Autodiscovery with my local Outlook, everything seems to be ok.
    We are using german exchange version.
    Can you help us?
    Thank you

    Regards
    ———-Error:
    The Autodiscover service returned an error.

    Exception: AutodiscoverRemoteException
    Target site: AutodiscoverService.InternalGetLegacyUserSettings

    Stack trace:
    bei Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverService.InternalGetLegacyUserSettings[TSettings](String emailAddress, List`1 redirectionEmailAddresses, Int32& currentHop)
    bei Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverService.GetLegacyUserSettings[TSettings](String emailAddress)
    bei Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverService.InternalGetLegacyUserSettings(String emailAddress, List`1 requestedSettings)
    bei Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverService.GetUserSettings(String userSmtpAddress, UserSettingName[] userSettingNames)
    bei Microsoft.Exchange.WebServices.Data.ExchangeService.GetAutodiscoverUrl(String emailAddress, ExchangeVersion requestedServerVersion, AutodiscoverRedirectionUrlValidationCallback validateRedirectionUrlCallback)
    bei Microsoft.Exchange.WebServices.Data.ExchangeService.AutodiscoverUrl(String emailAddress, AutodiscoverRedirectionUrlValidationCallback validateRedirectionUrlCallback)
    bei Microsoft.Exchange.WebServices.Data.ExchangeService.AutodiscoverUrl(String emailAddress)
    bei ExchangeMail.ReadMail.Execute(IOpalisRequest request, IOpalisResponse response)

  6. Andrew Katz says:

    Hello,

    I have run into a bug in your Get Attachments task. I need to reference a saved attachment in a child policy, but when I try to operate on the file, it says it is in use by another process. In your getAttachments method (below), please ensure that the filestream is closed so that it can be used in another process.

    Thanks!

    private IEnumerable getAttachments(EmailMessage message)
    {
    foreach (FileAttachment iteratorVariable0 in message.Attachments)
    {
    iteratorVariable0.Load();
    new FileStream(this.SaveLocation + @”\” + iteratorVariable0.Name.ToString(), FileMode.Create).Write(iteratorVariable0.Content, 0, iteratorVariable0.Content.Length);
    yield return new SavedAttachment(iteratorVariable0.Name.ToString(), this.SaveLocation);
    }
    }

    • randorfer says:

      Thanks for the heads up. Updated the code


      private IEnumerable getAttachments(EmailMessage message)
      {
      foreach(FileAttachment attach in message.Attachments)
      {
      attach.Load();
      FileStream fs = new FileStream(SaveLocation + "\\" + attach.Name.ToString(),FileMode.Create);
      fs.Write(attach.Content, 0, attach.Content.Length);
      fs.Close();
      fs.Dispose();
      yield return new SavedAttachment(attach.Name.ToString(), SaveLocation);
      }
      }

      I will test and wrap / update the integration pack on codeplex on Monday.

  7. Andrew Katz says:

    Thanks for the quick turn around. Is there any way you can issue a patch to the OIP instead of releasing a brand new OIP? After installing 1.5, I now need to replace all of the tasks that use the 1.4 OIP, and that is a ton of work.

  8. Andrew Katz says:

    Ryan,

    I’ve ran into another bug with GetAttachments. This time is because message.Attachments can be of type FileAttachment or ItemAttachment. If an email is attached to an email, there will be an invalid cast exception.

    I have the solution coded and tested, but don’t want to deviate from your code train. Feel free to reach out to me at ak “at” interclick “dot” com and I can share the code with you.

    Thanks,

    Andrew

  9. Viktor says:

    Hello
    I try to connect to my Exchange mailbox
    all the time an error

    The request failed. The remote server returned an error: (440) Login Timeout.

    Exception: ServiceRequestException
    Target site: ServiceRequestBase.ValidateAndEmitRequest

    Stack trace:
    at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(HttpWebRequest& request)
    at Microsoft.Exchange.WebServices.Data.SimpleServiceRequestBase.InternalExecute()
    at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute()
    at Microsoft.Exchange.WebServices.Data.ExchangeService.CreateFolder(Folder folder, FolderId parentFolderId)
    at Microsoft.Exchange.WebServices.Data.Folder.Save(FolderId parentFolderId)
    at ExchangeMail.CreateFolder.Execute(IOpalisRequest request, IOpalisResponse response)

    Profile Configuration:
    user name: domain user
    exchange version: exchange 2007 sp1
    pass: my pass
    domain: mydomain
    service url: https://mail.mydomain.com/owa

    • randorfer says:

      Hey Viktor,

      The problem (as you probably have figured out) has to do with the profile you are connecting with. To clarify a bit I will spell out what I expect for the different config fields.

      User Name: The sAMAccount Name of the mailbox user you are connecting as. For example if you had a user with a UPN of “abc12345@mydomain.com” I would expect “abc12345” to be entered into this field
      Exchange Version: Choose one of the options from the list provided. “Exchange2007_SP1” looks like what you want
      Password: The password of the user provided
      Domain: The domain of the User specified. Using the above user I would expect “mydomain.com” here
      ServiceUrl: Here you have two options. Autodiscover or specifying the path to your CAS server directly. The url for your CAS server should be in the following form https://mail.Contoso.com/EWS/Exchange.asmx. You should only specify your CAS server directly if Autodiscover does not work correctly (Autodiscover is the supported way from MS of connecting to your exchange environment)

  10. tester says:

    hi guys !
    i need to save all attachments from exchange e-mail
    but how can i get mail ID ???

    • randorfer says:

      Hey,
      This integration pack revolves around the ‘monitor mailbox’ and ‘read email’ for doing things with email. Both of those objects will output the email id you need for downloading attachments

      • tester says:

        so if i made policy with “monitoring email” + “get attachments” all be correct ?
        “get attachments” in row E-mail ID: {ID from “monitoring email”} needed ?
        or what i must type in that row

      • randorfer says:

        Yep that is the idea! You subscribe to the published data (the email id property) from the ‘monitor email’ object in your ‘download attachments’ object.

  11. Donoho says:

    I’ve read through documentation and comments, but haven’t seen anything about security. Everyone using the IP sees/has access to all configurations. Is there a was to secure/restrict configurations with permissions?

    • randorfer says:

      This is true and is true of all global configuration objects inside of Opalis and Orchestrator (not a limitation to this IP). Every global configuration is available to everyone who has authoring rights inside of Opalis. This has caused us internally to segment our environments highly. Each team has its own development environment, all dev environments roll up to a central QA environment that only the Opalis Admin team has access to and only things from that QA environment are pushed on to production. This (ability to controll who has access to what global configurations) is one of the DCRs we have open against orchestrator https://connect.microsoft.com/Opalis/feedback/details/674458/designer-cannot-assign-security-rights-to-options-menu-items please get behind this so it gets fixed and we can all simplify our Opalis environments.

  12. Yasin says:

    Hi, i think you changed “find mail” with “read mail”.

  13. donoho says:

    Should Find Folder work with Public Folders? Trying to come up with some layers of abstraction in the absence of per client security. Current plan: Use and pull/parse emails from public folder, making contents available to Opalis via file system which can be secured on a per user basis. Trying to avoid creating a new ad entry/inbox for everyone that wants to parse mail.

  14. Jac Pou says:

    Thanks for this great OIP!

    In our current setup we check a mailbox every 3 minutes for new emails in batches of 10 (and move mails for further processing). The problem is, if there are hundreds of new mails the object only picks up the 10 newest emails! So there is a theoretical possibility the first mails (in time) will never be processed if there is a continuously flow of mail.

    Is there somehow a possibility to retrieve mail according to the First In, First Out principle?

    • randorfer says:

      Hey Jac,

      I have some ideas around this let me do some testing and I will get back to you.

    • donoho says:

      Just out of curiosity, Are you using the read mail object? Why doesn’t the Monitor Mailbox object handle this for you?

      My current setup is in a policy that run constantly, uses the default 60 sec interval and grabs everything as it comes into the inbox. As a side note, this is not a High Volume inbox as it was created specifically for this processing and I have a requirement to save the email as well as the attachment .

      • randorfer says:

        The monitor mailbox object is the correct object to be using from this IP for the use case you have outlined (as Donoho pointed out). This object had a bit of a logic flaw in it that I just corrected (this change has NOT been rolled up into any integration pack yet, but will be included in future releases). Currently the monitor mailbox object will return AT MOST 100 objects (we query exchange and ask for a view that contains 100 objects in it), I have updated the object code so that it now will pull back AT MOST the largest integer value — see the change set below. I need to test this to ensure it does not adversly affect exchange.

        http://opalisexchangemail.codeplex.com/SourceControl/diff/file/view/13296?fileId=40864&olderChangeSetId=6978

      • Jac Pou says:

        Good question.
        Because there is a schedule in front of the read mailbox object. And behind the object are some processes which are not allowed to process the mail (service request) during evening hours and weekends (Not all (external) systems are available).
        The monitor object doesn’t handle mail First In First Out either (the mailbox will receive considerable amounts of mail).
        On top of that; a mail needs to be fully processed (automated back-office processes) before the next one can be handled. The process outcome of the first mail can change the way a next one should be handled.
        e.g. A customer changes his address (through mail), after this he makes his order during the weekend. If the order mail is processed first on Monday morning, it is send to the wrong address 🙂

  15. Mukesh Agarwal says:

    hi

    i am getting an error message : 504 gateway error connections …when i ran the policy in test mode i found the below error message “Request failed .The underlying connection was closed:Could not establish trust relationship for the SSL/TLS secure channel.” .My mailbox is on domain different domain and oaplis server is on different domain .Network team says that they have opened 443 open for exchange webservice ..any further network port is required ?

  16. Jocio says:

    Hello,
    How can I connect functional mailbox ? It’s drive me crazy 🙂

    • randorfer says:

      in the policy designer go to Options -> Exchange. Add a new configuration object and fill it out. It requires a few fields

      User Name — This is the user id that is assigned to the mailbox
      Exchange Version — Use the … button to choose your version of exchange
      password — password for the user
      domain — domain for the user
      ServiceURL — leave as autodiscover unless that does not work

  17. Jocio says:

    Hi randorfer,
    Thanks for your fast reply. That’s the point. How policy design knows which mailbox should choose to read email? This service account have many mailboxs assigned to it.:(
    Regards,

    • randorfer says:

      Hey Jocio,

      That is something that is unsupported in the current version (one account, multiple mailboxes) but is something people both internally here and externally have asked for. I will see what I can do to update the IP to allow for that use case scenario, stay tuned.

      -Ryan

      • Jocio says:

        Hi Ryan,
        Thanks for the update.I’ll keep tuned :), by the way I’ve tried to connect one single mailbox with one account and I still have problem. Maybe you can help to find way out 🙂

        Exchange Mailbox Settings are:
        User name: Domain\Account
        Exchange version: Exchange2007_SP1
        Password: (password)
        Domain: domain.company.net
        ServiceURL: Autodiscover

        When I test this configuration (above) to read mail from inbox, the task is not finished.

        After change ServiceURL: https://webmail.company.net/EWS/Exchange.asmx, I receive the follow error:

        The request failed. The remote server returned an error: (401) Unauthorized.

        Exception: ServiceRequestException
        Target site: ServiceRequestBase.ValidateAndEmitRequest

        Stack trace:
        at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(HttpWebRequest& request)
        at Microsoft.Exchange.WebServices.Data.SimpleServiceRequestBase.InternalExecute()
        at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute()
        at Microsoft.Exchange.WebServices.Data.ExchangeService.InternalFindFolders(IEnumerable`1 parentFolderIds, SearchFilter searchFilter, FolderView view, ServiceErrorHandling errorHandlingMode)
        at Microsoft.Exchange.WebServices.Data.ExchangeService.FindFolders(FolderId parentFolderId, SearchFilter searchFilter, FolderView view)
        at Microsoft.Exchange.WebServices.Data.ExchangeService.FindFolders(WellKnownFolderName parentFolderName, SearchFilter searchFilter, FolderView view)
        at ExchangeMail.ReadMail.Execute(IActivityRequest request, IActivityResponse response)

      • randorfer says:

        Yeah your problem here is that for username you are doing : domain\username — just put the user name here. The domain field is where you would put the domain of the user.

      • Jocio says:

        Hi Ryan,
        Thanks a lot. It’s works fine. You’re awesome 🙂

      • randorfer says:

        Hey Jocio,

        I am looking into how to implement this and have a question for you. What type of access does the account you would like to use have to the mailboxes? Is it setup as a deligate or does it use impersonation? I am not sure which would be the more common implementation (I may end up impelemting both and having it be an ‘Option’).

        -Ryan

        http://blogs.msdn.com/b/exchangedev/archive/2009/06/15/exchange-impersonation-vs-delegate-access.aspx

      • Jocio says:

        Hey Ryan,

        Let me try explain, what’s happened in my case. In our company we have a functional mailbox dedicated to process automation,

        We have other automation system (Automate BPA Server) using with this mailbox with single account access and our team don’t have access to the password (internal security policy company rule).

        IT team created a new domain account and grant full access permission for we can able to work with this mailbox.

        After this change, I can use mailbox with OWA or MS Outlook, but I can’t access this mailbox through Opalis (MS Orchestrator).

        I don’t know if this information answer your question. If not, please let me know.

        – Jocio

      • Reza says:

        Hi Ryan. I’m using the Exchange IP for Orchestrator and trying to use our service account to send e-mail and meeting invite for another account (impersonation). The service account already has access to do this, but i’m having trouble figuring out how to set this up in the integration pack. Any ideas?

  18. david says:

    How to put servers into SCOM Maintenance mode using opalis extension exchange mail (i.e when user sends an email, opalis can read that email after that place the server into maintenance mode)

  19. Beagle says:

    Hi,
    I have the same problem mentioned on Marc’s 3/31/11 post.
    Was a solution ever found?

    • randorfer says:

      Hey Beagle,

      The problem Marc was running into was autodiscover not working correctly on his server segment. As a work around the IP now has a configuration option called ServiceUrl. This is set to ‘Autodiscover’ by default which will attempt to find your exchange webservice URL using that method. As a workaround you can put in the direct URL to your exchange CAS servers webservice endpoint. And example of this is https://webmail.company.net/EWS/Exchange.asmx — hope this helps, let me know if you are still experiencing difficulties.

      • Beagle says:

        Ryan,

        Thanks for the quick reply. Upon reviewing the configuration options, I only have username, exchange version, password and domain. ServiceUrl is omitted. Looks like I need to upgrade the exchange integration pack before trying the fix. But is it possible to get Monitor Email to work without this parameter?

  20. gilad says:

    Hi,
    I am trying to use the incoming e-mail content (email body) and i dont know how to implement this.

    This is my process:
    Monitor mailbox –> ( ) –> send a replay e-mail
    I need the content of the incoming e-mail in order to get the sender e-mail address and also i need to use a few string from the incoming email body in my replay email.

    Any ideas?

    Thanks
    Gilad

    • randorfer says:

      Hey Gilad,

      Step 1 is to configure the monitor mailbox object (select a configuration by clicking the … button). Once this is one you can link it to any other object to do your parsing of the email body. To access that data simply right click and select subscribe -> Published Data and select the ‘Body Field’.

      Hope this helps, if you need more details let me know and I will create a quick post with images

      -Ryan

      • gilad says:

        Thanks for your quick replay.
        The monitor mailbox object is configure right (and its work).
        can you be more specified where can i find the “subscribe” ?

        thanks again
        Gilad

      • randorfer says:

        in any object after the monitor email object (connected by a link) you can ‘right click’ in any white space and select subscribe -> published data.

  21. gilad says:

    Hi Ryan,
    Thanks a lot. It’s works fine.

    One more question:
    where can i find example of parsing?

    in my body field i have {body from “monitor mailbox”} ?
    what are the option of parsing this { }?

  22. Molly says:

    Hello there – I’m using the read email -> get attachments as described above, but while the read email returns success, it isn’t outputing an id, so when it goes to get attachments, it’s failing because of the email id being null. Any ideas why the email id would not be returned from read email (without errors)? Thanks!

    • Molly says:

      PS I’m using v2.6 for Orchestrator. Thanks again,

    • randorfer says:

      Hey Molly,

      Let me look into this and I will let you know what I find! Thanks for the bug report

      • Molly says:

        Hey Ryan,
        Thanks a bunch! Any ideas about how tricky it might be? We’re evaluating whether or not to upgrade to Orchestrator and this would be a major detriment.
        Much appreciated,
        -molly

      • randorfer says:

        Molly

        This should be an easy fix. I will take a look at the code and let you know what I find.

        Sent from my HTC smartphone on the Now Network from Sprint!

      • randorfer says:

        Hey Molly,

        Can you give me a few more details, I am having some issues reproducing your problem. What version of exchange are you on? Are you trying to open an alternate mailbox or just the mailbox assigned to your connection account? You said it was the Read Mail From Folder object having problems correct? How do you have it configured? It is returning any details about the emails (and just excluding the Id)?

        Thanks,
        Ryan

      • Molly says:

        Hey Ryan,
        Turns out my filter was filtering out all of the emails so even though it said that it read one email, I was misinterpreting that as it having found one that matched. It works great now.
        Thanks so much for looking into this! I appreciate it.
        -molly

      • randorfer says:

        No problem let me know if you run into any other problems 🙂

        -Ryan

  23. Beagle says:

    Hi,
    I just installed Exchange Mail v1.5 but now get the following error when trying to add a Prerequisite Configuration.

    Details: Object reference not set to an instance of an object.

    Exception: NullReferenceException
    Targert site: OpalisObjectType..ctor

    Stack trace:
    at Opalis.QuickIntegrationKit.Framework.Core.OpalisObjecttype..ctor(Type type)
    at Opalis.QuickIntegrationKit.Framework.Core.QikFramework.MakeOpailsObjectType(Type type)
    at Opalis.QuickIntegrationKit.Framework.Core.DomainManager.MakeOpalisObject(Type type)
    at Opalis.QuickIntegrationKit.Framework.RequestBroker.MakeDesignObject(IPlatformRequest request)
    at Opalis.QuickIntegrationKit.Framework.RequestBroker.GetDesignFor(IPlatformRequest request)

    Any suggestions?
    Thanks, Beagle

  24. Sgt_Josh says:

    Has anyone tested this on Exchange SP2?

  25. MC says:

    Is ExchangeMailV1.5.OIP version compatible with Orchestrator 2012?

    • randorfer says:

      All orchestrator integration packs are available at scorch.codeplex.com — all of the disparate community IP projects for Opalis were consolidated for Orchestrator

  26. Johannes says:

    Hi Ryan,

    I’ve set up a read e-mail and get attachment runbook, but I’m scratching my head when all attachments are saved to my output folder even though I’ve specified “attachmentName Ends with .pdf” on the filters section.

    Am I doing something wrong, or isn’t the filter working on “Get Attachments”?

    Thanks for a great IP!

    Regards,
    Johannes

  27. MaS says:

    Hello,

    I dont know if there’s still someone around, but I get this error when I use it to send email for exemple.

    The magic number in GZip header is not correct. Make sure you are passing in a GZip stream.

    Exception: InvalidDataException
    Target site: GZipDecoder.ReadGzipHeader

    Stack trace:
    at System.IO.Compression.GZipDecoder.ReadGzipHeader()
    at System.IO.Compression.Inflater.Decode()
    at System.IO.Compression.Inflater.Inflate(Byte[] bytes, Int32 offset, Int32 length)
    at System.IO.Compression.DeflateStream.Read(Byte[] array, Int32 offset, Int32 count)
    at System.IO.Compression.GZipStream.Read(Byte[] array, Int32 offset, Int32 count)
    at System.Xml.XmlTextReaderImpl.InitStreamInput(Uri baseUri, String baseUriStr, Stream stream, Byte[] bytes, Int32 byteCount, Encoding encoding)
    at System.Xml.XmlTextReaderImpl.InitStreamInput(Stream stream, Encoding encoding)
    at System.Xml.XmlTextReaderImpl..ctor(String url, Stream input, XmlNameTable nt)
    at System.Xml.XmlTextReaderImpl..ctor(Stream input)
    at System.Xml.XmlTextReader..ctor(Stream input)
    at Microsoft.Exchange.WebServices.Data.EwsXmlReader.InitializeXmlReader(Stream stream)
    at Microsoft.Exchange.WebServices.Data.SimpleServiceRequestBase.ReadResponse(HttpWebResponse response)
    at Microsoft.Exchange.WebServices.Data.SimpleServiceRequestBase.InternalExecute()
    at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute()
    at Microsoft.Exchange.WebServices.Data.ExchangeService.InternalCreateItems(IEnumerable`1 items, FolderId parentFolderId, Nullable`1 messageDisposition, Nullable`1 sendInvitationsMode, ServiceErrorHandling errorHandling)
    at Microsoft.Exchange.WebServices.Data.ExchangeService.CreateItem(Item item, FolderId parentFolderId, Nullable`1 messageDisposition, Nullable`1 sendInvitationsMode)
    at Microsoft.Exchange.WebServices.Data.Item.InternalCreate(FolderId parentFolderId, Nullable`1 messageDisposition, Nullable`1 sendInvitationsMode)
    at Microsoft.Exchange.WebServices.Data.EmailMessage.InternalSend(FolderId parentFolderId, MessageDisposition messageDisposition)
    at Microsoft.Exchange.WebServices.Data.EmailMessage.Send()
    at ExchangeMail.SendEmail.Execute(IActivityRequest request, IActivityResponse response) in c:\Projects\TFS\scorch\Exchange Mail\Integration Pack\Object Classes\SendEmail.cs:line 192

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: