Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Question
Friday, January 6, 2012 6:17 PM
Hi,
I am trying to send email from VB.Net using outlook, but am getting error at run time. PFB my code and help me please also am using visual studio 2005 and MS Office 2007 and reference added in the project is "Microsoft Outlook 12.0 object library"
Imports Outlook = Microsoft.Office.Interop.Outlook
Public Class Index
Private Sub BSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BSend.Click
Try
' Create an Outlook application.
Dim oApp As Outlook._Application
oApp = New Outlook.Application()
' Create a new MailItem.
Dim oMsg As Outlook._MailItem
oMsg = oApp.CreateItem(Outlook.OlItemType.olMailItem)
oMsg.Subject = Me.TBSubject.Text
oMsg.Body = Me.TBBody.Text
' TODO: Replace with a valid e-mail address.
oMsg.To = Me.TBTo.Text
' Send
oMsg.Send()
MsgBox("Mail Send Successfully", MsgBoxStyle.Information)
' Clean up
oApp = Nothing
oMsg = Nothing
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class
In this above code i am getting error in the below line.
oMsg = oApp.CreateItem(Outlook.OlItemType.olMailItem)
Error is :
Unable to cast COM object of type 'Microsoft.Office.Interop.Outlook.ApplicationClass' to interface type 'Microsoft.Office.Interop.Outlook._Application'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{00063001-0000-0000-C000-000000000046}' failed due to the following error: Error loading type library/DLL. (Exception from HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY)).
thanks in advance
All replies (8)
Tuesday, January 10, 2012 5:55 AM ✅Answered | 1 vote
Hi M,
Thanks for posting in the MSDN Forum.
Sounds like you have a problem with your typelib registration. Presumably, the Com interop layer is hitting the registry to try to locate the typelib. It would start by looking under HKCR\Interface\00063001-0000-0000-C000-000000000046}\Typelib. The default value should refer to the guid for the typelib that defines the interface in question: which should be located under the following key: HKCR\Typelib\00062FFF-0000-0000-C000-000000000046}. There should be a version subkey and then a 0 subkey, and a win32 subkey under that. The default value of the win32 key should point to the typelib (which is msoutl.olb).
I'd recommend you check your Office directory for msoutl.olb. If it is there, try running 'regtlib msoutl.olb'. You should have regtlib on your machine is part of your Visual Studio install, I believe. Anyway, reregistering the typelib will rewrite all of the necessary keys to the registry. You will need administrative privileges for this operation.
The other possibility is that msoutl.olb itself is corrupt, in which case reinstalling Outlook should fix the problem.
Have a good day,
Tom
Tom Xu [MSFT]
MSDN Community Support | Feedback to us
Friday, January 6, 2012 9:24 PM
I copied and pasted your code, made a few changes (I manually put in the Subject, Body, and To:) - the only other difference is that my interop library is version 14.0.0.0 and my VS is VS2010
no errors here...
Imports Outlook = Microsoft.Office.Interop.Outlook
Public Class Form1
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Try
' Create an Outlook application.
Dim oApp As Outlook._Application
oApp = New Outlook.Application()
' Create a new MailItem.
Dim oMsg As Outlook._MailItem
oMsg = oApp.CreateItem(Outlook.OlItemType.olMailItem)
oMsg.Subject = "This is a test"
oMsg.Body = "Hello everyone, how are you ?"
' TODO: Replace with a valid e-mail address.
oMsg.To = "myemail@live.com"
' Send
oMsg.Send()
MsgBox("Mail Send Successfully", MsgBoxStyle.Information)
' Clean up
oApp = Nothing
oMsg = Nothing
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class
Friday, January 6, 2012 11:37 PM
try this. there's a significant difference between Microsoft Outlook 12.0 object library + Microsoft Outlook 14.0 object library:
' Create an Outlook application.
Dim oApp As Outlook.ApplicationClass
oApp = New Outlook.ApplicationClass()
thanks for any help
Saturday, January 7, 2012 6:06 PM
Hi Paul,
I have tried the above one but still am getting error
Error :
Unable to cast COM object of type 'Microsoft.Office.Interop.Outlook.ApplicationClass' to interface type 'Microsoft.Office.Interop.Outlook._Application'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{00063001-0000-0000-C000-000000000046}' failed due to the following error: Error loading type library/DLL. (Exception from HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY)).
plz give me the solution ASAP or plz give me any other way code to send email from outlook.
Saturday, January 7, 2012 6:08 PM
Hi Devon_Nullman
can you plz tel me mail send successfully to the mentioned mail id. i am also able to run without error but am getting error at runtime.
Monday, January 9, 2012 8:32 AM
Hi M RameshKumar,
Welcome to the MSDN forum.
This forum is about Visual Basic in Visual Studio. I’m afraid that your topic about outlook is unsuitable here. For better support, I’ll move this thread to Outlook for Developers Forum.
Sorry for any inconvenience and have a nice day.
Mark Liu-lxf [MSFT]
MSDN Community Support | Feedback to us
Friday, June 29, 2012 7:11 PM
THank you Tom, this helped me. I had a broken reference in Program Files. I'm not sure how it got there? I installed Office 14 but I can see that in both Program Files and Program Files x86. The Program Files one did not have msoutl.olb.
Do you have any ideas why I would have Office 14 folders in 2 places??
Tuesday, August 28, 2012 10:00 AM
Dear Tom_Xu
I haven't got any HKCR\Typelib\ as a key or a value in my registery database.
Could you indicate me how to fix it, pls?
Mtx in advance
Xavier Lefèvre