troubleshooting Question

Tried reading the outlook email attachment in c#. Getting error as Microsoft.Exchange.WebServices.Data.ServiceResponseException: Id is malformed.

Avatar of Imran Khunt
Imran Khunt asked on
C#ASP.NETEmail ServersMicrosoft Applications
2 Comments1 Solution511 ViewsLast Modified:
Hello everyone,

I am trying to read the email attachment for the outlook email in c# but i am new to this can anyone help me, i have the below code which select the new email with specific title.

String MailboxToAccess = "myemailaddress";
ExchangeService service = new Microsoft.Exchange.WebServices.Data.ExchangeService(ExchangeVersion.Exchange2007_SP1);
List<SearchFilter> searchFilterCollection = new List<SearchFilter>();
            searchFilterCollection.Add(new SearchFilter.ContainsSubstring(ItemSchema.Subject, "EDI"));
            searchFilterCollection.Add(new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false));
            SearchFilter searchFilter = new SearchFilter.SearchFilterCollection(LogicalOperator.Or, searchFilterCollection.ToArray());
            service.Credentials = new NetworkCredential("myemail", "pwd");
            service.AutodiscoverUrl(MailboxToAccess, adAutoDiscoCallBack);
            FolderId FolderToAccess = new FolderId(WellKnownFolderName.Inbox, MailboxToAccess);
            ItemView ivItemView = new ItemView(50);
            FindItemsResults<Item> FindItemResults = service.FindItems(FolderToAccess, searchFilter, ivItemView);
            PropertySet ItemPropertySet = new PropertySet(BasePropertySet.IdOnly);
            ItemPropertySet.RequestedBodyType = BodyType.Text;
///error here??????
                EmailMessage message = EmailMessage.Bind(service, new ItemId("AAMkA"), new PropertySet(BasePropertySet.IdOnly, ItemSchema.Attachments));

                // Iterate through the attachments collection and load each attachment.
                foreach (Attachment attachment in message.Attachments)
                    if (attachment is FileAttachment)
                        FileAttachment fileAttachment = attachment as FileAttachment;

                        // Load the file attachment into memory and print out its file name.
                        Console.WriteLine("Attachment name: " + fileAttachment.Name);

                        // Load attachment contents into a file.
                        fileAttachment.Load("C:\\temp\\" + fileAttachment.Name);

                        // Stream attachment contents into a file.
                        FileStream theStream = new FileStream("C:\\temp\\Stream_" + fileAttachment.Name, FileMode.OpenOrCreate, FileAccess.ReadWrite);
                    else // Attachment is an item attachment.
                        // Load attachment into memory and write out the subject.
                        ItemAttachment itemAttachment = attachment as ItemAttachment;
                        Console.WriteLine("Subject: " + itemAttachment.Item.Subject);
              //  }
        internal static bool adAutoDiscoCallBack(string redirectionUrl)
            // The default for the validation callback is to reject the URL.
            bool result = false;

            Uri redirectionUri = new Uri(redirectionUrl);

            // Validate the contents of the redirection URL. In this simple validation
            // callback, the redirection URL is considered valid if it is using HTTPS
            // to encrypt the authentication credentials.
            if (redirectionUri.Scheme == "https")
                result = true;

            return result;

Douglas Suyemoto
Global Support Services Engineer

Our community of experts have been thoroughly vetted for their expertise and industry experience.

Join our community to see this answer!
Unlock 1 Answer and 2 Comments.
Start Free Trial
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 1 Answer and 2 Comments.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros