Outlook Banter

Outlook Banter (http://www.outlookbanter.com/)
-   Add-ins for Outlook (http://www.outlookbanter.com/add-ins-outlook/)
-   -   Write RTF-Body on ItemSend event (http://www.outlookbanter.com/add-ins-outlook/39598-write-rtf-body-itemsend-event.html)

Thomas February 2nd 07 01:51 PM

Write RTF-Body on ItemSend event
 
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


Dmitry Streblechenko February 2nd 07 08:35 PM

Write RTF-Body on ItemSend event
 
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

"Thomas" wrote in message
ups.com...
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




Thomas February 12th 07 11:22 AM

Write RTF-Body on ItemSend event
 
Thank you Dmitry once again!
I tried your solution and it is working grreat!

With best regards,

Thomas

On 2 Feb., 21:35, "Dmitry Streblechenko" wrote:
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

"Thomas" wrote in message

ups.com...



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


WritingRTFtext 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 createdRTFtext.


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- Zitierten Text ausblenden -


- Zitierten Text anzeigen -





All times are GMT +1. The time now is 12:32 PM.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 2.4.0
Copyright ©2004-2006 OutlookBanter.com