Write RTF-Body on ItemSend event

T

Thomas

I want to create a small Outlook addin that writes some additional
lines of RTF text to the body when the mail item is sent.

Writing RTF text into the body I'm using a small extended MAPI based
procedure written in VC++.

Everytime the code leaves the event handler I got the error:
"The messaging interface returned an unknown error. If the problem
persits, restart Outlook."

When opening the message again I can see the newly created RTF text.

My code looks like that:

Private WithEvents host As Outlook.application

Private Sub host_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim id As String
id = Item.entryID

Call AddMessageByEntryId(id, host, "Confidential message")

....
....
....


I found within the newsgroups answers that I have to dereference all
Outlook MailItem instances and create a new one by calling
GetItemFromID. But how can I do this when I'm in the event handler
that holds an instance itself?
Does anybody have an idea what could I do?
Any help greatly appreciated!


With best regards,

Thomas
 
D

Dmitry Streblechenko

You get a conflict - looking at the AddMessageByEntryId() method, you pass
the entry id of the message (which will be "" if the message hasn't been
saved yet), most likely you MAPI code than reopens the message using
IMAPISession::OpenEntry. Instead of reopening the message, modify the MAPI
function to take an IUnknown and QI it for IMessage. On the VB side, pass
Item.MAPIOBJECT .

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
 
T

Thomas

Thank you Dmitry once again!
I tried your solution and it is working grreat!

With best regards,

Thomas
 

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