issue with using outlook in

I have a function where I am using outllok to save an email from a application which works fine in my development environment using visual studio but get the following error when I deploy to test environment which is using windows 2008 r2 and below is the error:

Message from webpage
problem in page load to the error: Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

and below is my piece of code:
Imports outlook = Microsoft.Office.Interop.Outlook

 Public Sub testemail()
        Dim OutlookMessage As outlook.MailItem
        Dim AppOutlook As New outlook.Application

        Dim objNS As outlook._NameSpace = AppOutlook.Session
        Dim objFolder As outlook.MAPIFolder
        objFolder = objNS.GetDefaultFolder(outlook.OlDefaultFolders.olFolderDrafts)

            OutlookMessage = AppOutlook.CreateItem(outlook.OlItemType.olMailItem)
            Dim Recipents As outlook.Recipients = OutlookMessage.Recipients

            OutlookMessage.Subject = "test"
            OutlookMessage.Body = "Testing outlook Mail"
            OutlookMessage.BodyFormat = outlook.OlBodyFormat.olFormatHTML
            ' OutlookMessage.Move(objFolder)
        Catch ex As Exception
            'MessageBox.Show("Mail could not be sent") 'if you dont want this message, simply delete this line    
            OutlookMessage = Nothing
            AppOutlook = Nothing
        End Try
end sub
welcome 123Asked:
Who is Participating?
Bob LearnedConnect With a Mentor Commented:
If you need to understand a little about EWS, you can start here:

Exchange Web Services

You would need to connect to the Exchange web service, create an EmailMessage, and call the Save method to save to the default folder.
Bob LearnedCommented:
The obvious question is do you have Outlook installed on the server?
welcome 123Author Commented:
no, all I want is the user to sve an email in outlook and anybody has an idea using exchange webservices?
Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

Bob LearnedCommented:
You would need to install Outlook on the service to use the COM library.

Using Exchange Web Services would be different from using Outlook interop library.  How much would you need to know about EWS?
welcome 123Author Commented:
It works fine in development but when I pushed it to the test server i am getting the below error :
I even installed the WES on the server.

Could not load file or assembly 'Microsoft.Exchange.WebServices, Version=, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified
welcome 123Author Commented:
it work after I manually registed the dll but it takes a long time calling EWS, is there a way to speed up?
Bob LearnedCommented:
What is taking a long time (auto-discover, saving E-Mail message, ...?  

Can you show me code where it takes too much time?
welcome 123Author Commented:
I commented the line: 'service.AutodiscoverUrl(validateEmail, AddressOf ValidateRedirectionUrlCallback)
 and it still works and also speeds up other wise its way too slow and I don't know why this line is actually useed

 Public Sub SaveEmailMessage()

        Dim service As ExchangeService = Nothing
        Dim emailServiceURL As String = ""
            If service Is Nothing Then
                service = New ExchangeService(ExchangeVersion.Exchange2010_SP1)
                service.Url = New Uri(emailServiceURL)
                service.UseDefaultCredentials = False
            End If
            Dim netcredit As New NetworkCredential("testusername", "testpassword", "testdomain")
            service.Credentials = netcredit
'service.AutodiscoverUrl(validateEmail, AddressOf ValidateRedirectionUrlCallback)
            'now send a test email
            'EmailMessage(message = New EmailMessage(service))
            Dim message = New EmailMessage(service)
            message.Subject = "Email from PCardTE"

            message.Body = SaveData().ToString
            ' message.Body.BodyType = BodyType.HTML

            ' message.SendAndSaveCopy()
            '.BodyFormat = outlook.OlBodyFormat.olFormatHTML

            Catch ex As Exception

                Dim Err As New ErrorLog()
                Err.ErrorLog(Server.MapPath("~/Logs/ErrorLog"), ex.Message)
                JavaScriptSetFocus("Unable to save email due to the error: " & ex.Message)
            End Try
    End Sub

[SouthMod: I've edited the URL above]
Bob LearnedCommented:
If you want to discover the URL, then you would use the AutoDiscoverUrl method.  Since you are specifying the URL, then you don't need to use auto-discover.

Also, if you don't want to show the URL for your web service to the world, then you might want to ask an admin to remove that from the question (it's a good practice not to post sensitive information in a comment).
welcome 123Author Commented:
thanks for your comment, I didn't notice that in a hurry, usually I make everything look like a test , will email admin ASAP
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.