How can I embedd graphics in Outlook Email without using MAPI

S

Siv

Hi,
A little while ago I wrote a small program that allowed the user to view
products from a database. The database holds the details of the products
which can be viewed via a form and additionally pictures of the product are
stored in an images subfolder and the database holds the file name of the
relevant picture. The user can then click a button to display the picture in
a pop-up window and also another button to email the potential customer with
the details and the picture embedded in the HTML formatted email.

This all worked swimmingly when the client was using Office 2000, since they
have moved to Office 2003 I get loads of problems at the point where MAPI is
accessed with the following:

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.Exception: Cannot create ActiveX component.
at Microsoft.VisualBasic.Interaction.CreateObject(String ProgId, String
ServerName)
at PriceList.frmEmail.EmbeddedHTMLGraphicMessage(String EmailAddress,
String Subject, String BodyHTML)
at PriceList.frmEmail.Button1_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons
button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg,
IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.42 (RTM.050727-4200)
CodeBase:
file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
PriceList
Assembly Version: 1.0.2314.1775
Win32 Version: 1.0.2314.1775
CodeBase:
file:///C:/Program%20Files/Tamarisk/The%20Pricelist%20Application/PriceList.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.42 (RTM.050727-4200)
CodeBase:
file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.42 (RTM.050727-4200)
CodeBase:
file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.42 (RTM.050727-4200)
CodeBase:
file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
Microsoft.VisualBasic
Assembly Version: 8.0.0.0
Win32 Version: 8.0.50727.42 (RTM.050727-4200)
CodeBase:
file:///C:/WINDOWS/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System.Data
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.42 (RTM.050727-4200)
CodeBase:
file:///C:/WINDOWS/assembly/GAC_32/System.Data/2.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
System.Transactions
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.42 (RTM.050727-4200)
CodeBase:
file:///C:/WINDOWS/assembly/GAC_32/System.Transactions/2.0.0.0__b77a5c561934e089/System.Transactions.dll
----------------------------------------
System.EnterpriseServices
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.42 (RTM.050727-4200)
CodeBase:
file:///C:/WINDOWS/assembly/GAC_32/System.EnterpriseServices/2.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll
----------------------------------------
System.Configuration
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.42 (RTM.050727-4200)
CodeBase:
file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.42 (RTM.050727-4200)
CodeBase:
file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
Microsoft.Office.Interop.Outlook
Assembly Version: 11.0.0.0
Win32 Version: 11.0.5530
CodeBase:
file:///C:/WINDOWS/assembly/GAC/Microsoft.Office.Interop.Outlook/11.0.0.0__71e9bce111e9429c/Microsoft.Office.Interop.Outlook.dll
----------------------------------------
Interop.MAPI
Assembly Version: 1.21.0.0
Win32 Version: 1.21.0.0
CodeBase:
file:///C:/Program%20Files/Tamarisk/The%20Pricelist%20Application/Interop.MAPI.DLL
----------------------------------------
On reading the Microsoft notes I can find on MSDN it appears that MS don't
want you creating HTML based email using calls to MAPI and suggest that you
do it using System.Web.Mail or other components.

Has anyone had this problem and found a way to create emails using Outlook
without needing to use MAPI or not using MAPI directly. I have been
scouring the NET and can't really find a solution that uses managed code. I
want to keep the email within Outlook rather than directly sending using
SMTP mail as I would like the user to have a record in their sent items of
the customers they have sent information about products to.

Any help greatfully accepted.
 
S

Siv

Hi,
Thanks for your reply, I was hoping to report back and let you know if the
suggestion worked but I can't get access to the PC that is causing me
problems at the moment (I am remote support/development for the client) so
when I have tried these suggestions I will report back.

The main thrust of the original post though was to see if anyone had tackled
this problem without using MAPI. I have looked at loads of examples but
most people seem to be sending using SMTP directly and I have not found any
examples that use embedded graphics, most use embedded links to graphics on
a web server which isn't what I need to do, the graphics must appear within
the body of the HTML email. My existing code does this quite happily but
doesn't seem to work where the user has Office 2003 installed? However it
works fine on my own system which does have office 2003 only installed.

I have tested the application within the VS.Net environment and as a
standalone exe file and it runs fine on my system. The setup program places
the following DLL files into the program files folder:

AxInterop.SHDocVw.dll
Interop.MAPI.dll
Interop.Microsoft.Office.Core.dll
Interop.Outlook.dll
Interop.SHDocVw.dll
MSO.DLL
stdole.dll
msoutl.olb
PriceList.exe
PriceList.pdb

PriceList.exe being the main program file.

Thanks
Siv

vbnetdev said:
 
S

Siv

Afraid to say the changes made in the KB article made no difference, I think
the error is in my code at the point that the MAPI login occurs.
Siv
Siv said:
Hi,
Thanks for your reply, I was hoping to report back and let you know if the
suggestion worked but I can't get access to the PC that is causing me
problems at the moment (I am remote support/development for the client) so
when I have tried these suggestions I will report back.

The main thrust of the original post though was to see if anyone had
tackled this problem without using MAPI. I have looked at loads of
examples but most people seem to be sending using SMTP directly and I have
not found any examples that use embedded graphics, most use embedded links
to graphics on a web server which isn't what I need to do, the graphics
must appear within the body of the HTML email. My existing code does this
quite happily but doesn't seem to work where the user has Office 2003
installed? However it works fine on my own system which does have office
2003 only installed.

I have tested the application within the VS.Net environment and as a
standalone exe file and it runs fine on my system. The setup program
places the following DLL files into the program files folder:

AxInterop.SHDocVw.dll
Interop.MAPI.dll
Interop.Microsoft.Office.Core.dll
Interop.Outlook.dll
Interop.SHDocVw.dll
MSO.DLL
stdole.dll
msoutl.olb
PriceList.exe
PriceList.pdb

PriceList.exe being the main program file.

Thanks
Siv
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top