A Microsoft Outlook email forum. Outlook Banter

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

Go Back   Home » Outlook Banter forum » Microsoft Outlook Email Newsgroups » Add-ins for Outlook
Site Map Home Register Authors List Search Today's Posts Mark Forums Read Web Partners

Direction/Help required for not to save MailItems in Sent Folder



 
 
Thread Tools Search this Thread Display Modes
  #1  
Old September 28th 07, 12:29 AM posted to microsoft.public.outlook.program_addins
PS
external usenet poster
 
Posts: 35
Default Direction/Help required for not to save MailItems in Sent Folder

Ken

Thanks for the response. I now understand the Entry ID part but have
some issues with the real code implementation:

1. I looked for cancelling the Send event on the original email. Cant
seem to find any code. Can you please point this to me. I am really
having a hard time finding this.

Also I see this - myItem.SavveSentMessageFolder -- which i believe i
can use to save the email directly into the sent message folder. This
may avoid the MyItem.Save and then moving?

What do you suggest.

Thanks

  #2  
Old September 28th 07, 03:21 PM posted to microsoft.public.outlook.program_addins
Ken Slovak - [MVP - Outlook]
external usenet poster
 
Posts: 5,848
Default Direction/Help required for not to save MailItems in Sent Folder

There are 2 possibilities for canceling a send. The first event is
item.Send, which fires initially when the user clicks send. That event is on
the MailItem and fires only in that item. The second event is the
Application.ItemSend event, which is an application-wide event.

In either event all you do is set Cancel = true to cancel the send
operation.

SaveSentMessageFolder takes a MAPIFolder as an argument and provides a way
of setting that one specific item to save in your folder of choice. The
property is only used after the after is sent out, so it's of no use when
cancelling a send. You could set that property to Drafts, My Old Outgoing
Mail, Sent Items, or wherever else you want.

DeleteAfterSubmit is a Boolean property that when set will delete the sent
item after it's sent out and leave no copies behind.

--
Ken Slovak
[MVP - Outlook]
http://www.slovaktech.com
Author: Professional Programming Outlook 2007
Reminder Manager, Extended Reminders, Attachment Options
http://www.slovaktech.com/products.htm


"PS" wrote in message
ups.com...
Ken

Thanks for the response. I now understand the Entry ID part but have
some issues with the real code implementation:

1. I looked for cancelling the Send event on the original email. Cant
seem to find any code. Can you please point this to me. I am really
having a hard time finding this.

Also I see this - myItem.SavveSentMessageFolder -- which i believe i
can use to save the email directly into the sent message folder. This
may avoid the MyItem.Save and then moving?

What do you suggest.

Thanks


  #3  
Old September 28th 07, 04:09 PM posted to microsoft.public.outlook.program_addins
PS
external usenet poster
 
Posts: 35
Default Direction/Help required for not to save MailItems in Sent Folder

Ken

Thanks for the really quick response. I am actually doing that -
setting cancel = true (in MailItem_Send event) and that works fine. I
was thinking the implementation was something different. Beucase when
i do that - that ofcourse stops the email from going out - but the
actual email stays open.

Reading back your first post - it means that after doing that
(cancel=true) I need to call the MyItem.Save first (which I believe
will save it in inbox) and then MyItem.Close or something similar (do
i need to call that because i belive the save only saves the email but
does not close it)

Does that approach sound right?

Thanks a lot once again. really helping me

  #4  
Old September 28th 07, 04:42 PM posted to microsoft.public.outlook.program_addins
Ken Slovak - [MVP - Outlook]
external usenet poster
 
Posts: 5,848
Default Direction/Help required for not to save MailItems in Sent Folder

That's correct. You most likely will be best off in setting a timer to go
off maybe 1/2 second or so after you exit the item.Send event and then in
the timer event call item.Close. So the sequence would be:

In Item.Send:
Save item
Get item EntryID
Cancel Save event
Set timer

In timer event:
Close the item

Now at that point the item is closed so you need to find a way to get at it
to move it or whatever. So in the timer event set a flag to true to indicate
that the item was closed by you. Then in the close event set up an array of
the item EntryID and StoreID (item.Parent.StoreID) and set another timer to
fire later on. Release all of your objects so the object is completely
uninstantiated. In the later timer event read the global array or collection
or whatever and get the item and move it where you want or do whatever with
it.

--
Ken Slovak
[MVP - Outlook]
http://www.slovaktech.com
Author: Professional Programming Outlook 2007
Reminder Manager, Extended Reminders, Attachment Options
http://www.slovaktech.com/products.htm


"PS" wrote in message
ups.com...
Ken

Thanks for the really quick response. I am actually doing that -
setting cancel = true (in MailItem_Send event) and that works fine. I
was thinking the implementation was something different. Beucase when
i do that - that ofcourse stops the email from going out - but the
actual email stays open.

Reading back your first post - it means that after doing that
(cancel=true) I need to call the MyItem.Save first (which I believe
will save it in inbox) and then MyItem.Close or something similar (do
i need to call that because i belive the save only saves the email but
does not close it)

Does that approach sound right?

Thanks a lot once again. really helping me


  #5  
Old October 1st 07, 02:48 PM posted to microsoft.public.outlook.program_addins
PS
external usenet poster
 
Posts: 35
Default Direction/Help required for not to save MailItems in Sent Folder

Ken

I was implementing the above discussed content and am getting an error
(which I believe shouldnt be the case) when working with the Mail
Close logic

In the MailItem_Send event as discussed - after setting Cancel = true
- in the end I start a timer event which lets say gets called after 3
seconds

But still get this error on
Marshal.FinalReleaseComObject(myMailItem);:

Error Text:
RaceOnRCWCleanup was detected
Message: An attempt has been made to free an RCW that is in use. The
RCW is in use on the active thread or another thread. Attempting to
free an in-use RCW can cause corruption or data loss.

Code he

private void MailItem_ItemSend(ref bool Cancel)
{
Business Logic here..

If certain business condition is true then.
Cancel = true
Then Timer Logic (which is below)
Timer delay = new Timer();
delay.Enabled = true;
delay.Interval = 10000;
delay.Tick += new EventHandler(delay_Tick);
}

void delay_Tick(object sender, EventArgs e)
{
myMailItem.Close(Ol.OlInspectorClose.olSave);
Or Even tried below:
myMailItem.Delete();
}

private void MailItem_ItemClose(ref bool Cancel)
{
try
{
//Execute cleanup only if the item has not changed, b'coz the
message box prompts users to save the message is displayed
//after this event. That message box also gives the user
the ability to cancel the event
//so we do not want to unwire the events here if the
message is "dirty"
if (this.isSent || myMailItem.Saved)
{
CleanMailItemEvents();
//Some more cleannup
}
}
}

public void CleanMailItemEvents()
{
Ol.ItemEvents_10_Event _myMailItemEvents = myMailItem as
Ol.ItemEvents_10_Event;
_myMailItemEvents.Close -= new
Ol.ItemEvents_10_CloseEventHandler(MailItem_ItemCl ose);
_myMailItemEvents.Send -= new
Ol.ItemEvents_10_SendEventHandler(MailItem_ItemSen d);
_myMailItemEvents.Forward -= new
Ol.ItemEvents_10_ForwardEventHandler(MailItem_Item Forward);
_myMailItemEvents.Reply -= new
Ol.ItemEvents_10_ReplyEventHandler(MailItem_ItemFo rward);
_myMailItemEvents.ReplyAll -= new
Ol.ItemEvents_10_ReplyAllEventHandler(MailItem_Ite mRelpyAll);
_myMailItemEvents = null;
Marshal.FinalReleaseComObject(myMailItem);
myMailItem = null;
}

  #6  
Old October 1st 07, 04:29 PM posted to microsoft.public.outlook.program_addins
Ken Slovak - [MVP - Outlook]
external usenet poster
 
Posts: 5,848
Default Direction/Help required for not to save MailItems in Sent Folder

See if Marshal.ReleaseComObject works any better. If not think about not
calling that function at all.

--
Ken Slovak
[MVP - Outlook]
http://www.slovaktech.com
Author: Professional Programming Outlook 2007
Reminder Manager, Extended Reminders, Attachment Options
http://www.slovaktech.com/products.htm


"PS" wrote in message
oups.com...
Ken

I was implementing the above discussed content and am getting an error
(which I believe shouldnt be the case) when working with the Mail
Close logic

In the MailItem_Send event as discussed - after setting Cancel = true
- in the end I start a timer event which lets say gets called after 3
seconds

But still get this error on
Marshal.FinalReleaseComObject(myMailItem);:

Error Text:
RaceOnRCWCleanup was detected
Message: An attempt has been made to free an RCW that is in use. The
RCW is in use on the active thread or another thread. Attempting to
free an in-use RCW can cause corruption or data loss.

Code he

private void MailItem_ItemSend(ref bool Cancel)
{
Business Logic here..

If certain business condition is true then.
Cancel = true
Then Timer Logic (which is below)
Timer delay = new Timer();
delay.Enabled = true;
delay.Interval = 10000;
delay.Tick += new EventHandler(delay_Tick);
}

void delay_Tick(object sender, EventArgs e)
{
myMailItem.Close(Ol.OlInspectorClose.olSave);
Or Even tried below:
myMailItem.Delete();
}

private void MailItem_ItemClose(ref bool Cancel)
{
try
{
//Execute cleanup only if the item has not changed, b'coz the
message box prompts users to save the message is displayed
//after this event. That message box also gives the user
the ability to cancel the event
//so we do not want to unwire the events here if the
message is "dirty"
if (this.isSent || myMailItem.Saved)
{
CleanMailItemEvents();
//Some more cleannup
}
}
}

public void CleanMailItemEvents()
{
Ol.ItemEvents_10_Event _myMailItemEvents = myMailItem as
Ol.ItemEvents_10_Event;
_myMailItemEvents.Close -= new
Ol.ItemEvents_10_CloseEventHandler(MailItem_ItemCl ose);
_myMailItemEvents.Send -= new
Ol.ItemEvents_10_SendEventHandler(MailItem_ItemSen d);
_myMailItemEvents.Forward -= new
Ol.ItemEvents_10_ForwardEventHandler(MailItem_Item Forward);
_myMailItemEvents.Reply -= new
Ol.ItemEvents_10_ReplyEventHandler(MailItem_ItemFo rward);
_myMailItemEvents.ReplyAll -= new
Ol.ItemEvents_10_ReplyAllEventHandler(MailItem_Ite mRelpyAll);
_myMailItemEvents = null;
Marshal.FinalReleaseComObject(myMailItem);
myMailItem = null;
}


  #7  
Old October 11th 07, 08:48 PM posted to microsoft.public.outlook.program_addins
PS
external usenet poster
 
Posts: 35
Default Direction/Help required for not to save MailItems in Sent Folder

Ken

Sorry for the late reply on this.

I actually was able to do a Move on the email - when in the Item send
method and that actually worked (once i supply the folder name). That
moves the email and also closes the original after the move.

This saves the effort of maintaining those variables in global in the
close event.

Thanks
Pratik

  #8  
Old September 28th 07, 03:54 PM posted to microsoft.public.outlook.program_addins
PS
external usenet poster
 
Posts: 35
Default Direction/Help required for not to save MailItems in Sent Folder

I looked into this more all of last night - but cant seem to find
(sorry for my ignorance) - how to stop/cancel the send event of an
email and then close it properly. Even if it stays in inblx it is fine
because using the .Move method is very easy or as I mentioned
myItem.SavveSentMessageFolder possibly.

But please Ken - can you please point me how to do that

Thanks

 




Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Hot to speed up MailItems access Ivan Add-ins for Outlook 8 June 27th 07 06:39 PM
Move MailItems to another folder Gvaram Outlook and VBA 5 June 25th 07 01:46 PM
Could not save item. the form required to view this message cannot matt hullinger Outlook - Calandaring 1 February 20th 07 11:48 PM
Can someone point me in the right direction configuring Outlook To Sam Outlook - Installation 0 June 8th 06 03:25 AM
How To: select mailitems from my inbox? NFR Outlook - Using Forms 1 May 16th 06 04:41 PM


All times are GMT +1. The time now is 01:17 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-2025 Outlook Banter.
The comments are property of their posters.