![]() |
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. |
|
|
Thread Tools | Search this Thread | Display Modes |
#1
|
|||
|
|||
![]()
Hi all
Getting a little stuck on my outbound rules / vba code. I currently run an excellent addin called TAGLOCITY which tags emails with categories. What I am trying to do PREFIX the mail subject based on the category. NOTE: The taglocity addin triggers a category request AFTER the item.send action. for example; I have a category "100 Love St" (this is my project name) I have a color for all PROJECTS -- construction project are DARKGREEN When I send the mail I want the addin to check the subject for a ":" Then if there is no ":", prefix with "Job:" and the category. I have the code for this and it works fine if i manually trigger the vba code. I have a rule to hold the email in outbox for 1minute to give the program time to modify and for me to go in and cancel the send ![]() code below: Sub PrefixMailItemInOutbox() Dim oNS As Outlook.NameSpace Dim oFld As Outlook.Folder Dim oItems As Outlook.Items Dim oItem As Object Dim Item As Outlook.MailItem On Error GoTo OL_Error Set oNS = Application.GetNamespace("MAPI") Set oFld = oNS.GetDefaultFolder(olFolderOutbox) Set oItems = oFld.Items 'Set objItem = GetCurrentItem() StoreID = oFld.StoreID For Each oItem In oItems If InStr(1, oItem.Subject, ":", vbTextCompare) = 0 Then If Len(oItem.Categories) 0 Then Set objItem = oNS.GetItemFromID(oItem.EntryID, StoreID) For Each objCategory In oNS.Categories If InStr(1, objItem.Categories, objCategory.Name, vbTextCompare) 0 Then Select Case objCategory.Color Case OlCategoryColor.olCategoryColorDarkRed objItem.Subject = "Roofing:" & objCategory.Name & " - " & objItem.Subject objItem.Save Case OlCategoryColor.olCategoryColorBlack objItem.Subject = "Carpentry:" & objCategory.Name & " - " & objItem.Subject objItem.Save Case OlCategoryColor.olCategoryColorDarkGreen objItem.Subject = "Job:" & objCategory.Name & " - " & objItem.Subject objItem.Save End Select End If Next End If objItem.Send 'Set objItem = Nothing End If Next Exit Sub OL_Error: MsgBox Err.Description Err.Clear End Sub Thanks in advance Andy |
Ads |
#2
|
|||
|
|||
![]()
Hook into the Application.ItemSend event in the ThisOutlookSession code
window. It gets passed the email that is being sent so that you can manipulate it:- Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) Dim myItem As MailItem If TypeName(Item) = "olMailItem" Then Set myItem = Item 'Do something here such as call your routine passing the myItem object End If End Sub I guess that your addin is already hooking into this event, so I am not sure whether this would run before or after the addin, perhaps someone else can advise. -- Alan Moseley IT Consultancy http://www.amitc.co.uk If I have solved your problem, please click Yes below. Thanks. "andy tomic" wrote: Hi all Getting a little stuck on my outbound rules / vba code. I currently run an excellent addin called TAGLOCITY which tags emails with categories. What I am trying to do PREFIX the mail subject based on the category. NOTE: The taglocity addin triggers a category request AFTER the item.send action. for example; I have a category "100 Love St" (this is my project name) I have a color for all PROJECTS -- construction project are DARKGREEN When I send the mail I want the addin to check the subject for a ":" Then if there is no ":", prefix with "Job:" and the category. I have the code for this and it works fine if i manually trigger the vba code. I have a rule to hold the email in outbox for 1minute to give the program time to modify and for me to go in and cancel the send ![]() item.send command and there after the TAGLOCITY addin has had a chance to add in the category. code below: Sub PrefixMailItemInOutbox() Dim oNS As Outlook.NameSpace Dim oFld As Outlook.Folder Dim oItems As Outlook.Items Dim oItem As Object Dim Item As Outlook.MailItem On Error GoTo OL_Error Set oNS = Application.GetNamespace("MAPI") Set oFld = oNS.GetDefaultFolder(olFolderOutbox) Set oItems = oFld.Items 'Set objItem = GetCurrentItem() StoreID = oFld.StoreID For Each oItem In oItems If InStr(1, oItem.Subject, ":", vbTextCompare) = 0 Then If Len(oItem.Categories) 0 Then Set objItem = oNS.GetItemFromID(oItem.EntryID, StoreID) For Each objCategory In oNS.Categories If InStr(1, objItem.Categories, objCategory.Name, vbTextCompare) 0 Then Select Case objCategory.Color Case OlCategoryColor.olCategoryColorDarkRed objItem.Subject = "Roofing:" & objCategory.Name & " - " & objItem.Subject objItem.Save Case OlCategoryColor.olCategoryColorBlack objItem.Subject = "Carpentry:" & objCategory.Name & " - " & objItem.Subject objItem.Save Case OlCategoryColor.olCategoryColorDarkGreen objItem.Subject = "Job:" & objCategory.Name & " - " & objItem.Subject objItem.Save End Select End If Next End If objItem.Send 'Set objItem = Nothing End If Next Exit Sub OL_Error: MsgBox Err.Description Err.Clear End Sub Thanks in advance Andy -- andy tomic |
#3
|
|||
|
|||
![]()
It's impossible to determine what addin will run things in what order. It
depends on the load order of the addins (Outlook VBA is just another COM addin) and which ones register for which events in which order. If that addin is actually hooking to Application.ItemSend() then it might be after or before a VBA hook. If the VBA code must be after the addin massages the data then using an earlier event such as item.Send() wouldn't help, but many addins do use that event rather than Application.ItemSend() since that fires after the email transport is engaged and so is too late for some item manipulations. -- 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 "Alan Moseley" wrote in message ... Hook into the Application.ItemSend event in the ThisOutlookSession code window. It gets passed the email that is being sent so that you can manipulate it:- Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) Dim myItem As MailItem If TypeName(Item) = "olMailItem" Then Set myItem = Item 'Do something here such as call your routine passing the myItem object End If End Sub I guess that your addin is already hooking into this event, so I am not sure whether this would run before or after the addin, perhaps someone else can advise. -- Alan Moseley IT Consultancy http://www.amitc.co.uk If I have solved your problem, please click Yes below. Thanks. |
#4
|
|||
|
|||
![]()
Thank you Alan and Ken.
The addin is definitely triggered after the Application.ItemSend event. What I was thinking as a work around is to delay the message in the outbox for 1 min using a rule. Then manipulate the message with the code. My only shortfall is that I have not the knowledge to create a CUSTOM ACTION in the rules section. Is there a simple way to call the procedure once the email gets into the outbox ?? Thanking you in advance Andy |
#5
|
|||
|
|||
![]()
If you touch the item in the Outbox using code the send will be cancelled.
Application_ItemSend() will always fire, but sometimes it fires too late for what you want to do, or some properties aren't changeable at that time. If you want to handle things earlier, before the item gets to the Outbox handle the Send() event on the item rather than the application-wide event. -- 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 "andy tomic" wrote in message ... Thank you Alan and Ken. The addin is definitely triggered after the Application.ItemSend event. What I was thinking as a work around is to delay the message in the outbox for 1 min using a rule. Then manipulate the message with the code. My only shortfall is that I have not the knowledge to create a CUSTOM ACTION in the rules section. Is there a simple way to call the procedure once the email gets into the outbox ?? Thanking you in advance Andy -- andy tomic |
#6
|
|||
|
|||
![]()
Thanks Ken,
This is my problem. The Application_Send event fires TO EARLY. I need the PROPRIETARY addin to fire first, it sets the category for the mailitem. Then I can manipulate the subject based on the newly set category, and save and resend the mailitem. Also, the form based send() event fires to early as well. I basically need the code to run after the PROPRIETARY addin runs. The only way I have thought of is to put a 1min delay on the outbound mail rule and perform a custom action. Unfortunately my programming skills dont travel to the DLL world. Any other ideas on how to accomplish this. Thank you Andy |
#7
|
|||
|
|||
![]()
I have no idea what proprietary addin you're talking about.
Application.ItemSend() is the last event you'd get on outgoing items, so if that's too early for you then you need to rethink your architecture. -- 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 "andy tomic" wrote in message ... Thanks Ken, This is my problem. The Application_Send event fires TO EARLY. I need the PROPRIETARY addin to fire first, it sets the category for the mailitem. Then I can manipulate the subject based on the newly set category, and save and resend the mailitem. Also, the form based send() event fires to early as well. I basically need the code to run after the PROPRIETARY addin runs. The only way I have thought of is to put a 1min delay on the outbound mail rule and perform a custom action. Unfortunately my programming skills dont travel to the DLL world. Any other ideas on how to accomplish this. Thank you Andy -- andy tomic |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Subject will not update | ExcelLars | Outlook and VBA | 1 | February 26th 09 06:48 AM |
OLEXP outbound mail failure | schiermeier | Outlook Express | 9 | May 13th 08 03:23 AM |
Outlook 2007/Vista - Outbound mail failing | makerofgirls | Outlook - General Queries | 7 | May 8th 07 09:58 PM |
E-Mail msg's won't send (outbound) | Bubey | Outlook Express | 3 | February 22nd 07 05:02 PM |
Bcc bar on outbound mail | speedy_mike | Outlook Express | 5 | January 30th 07 08:38 PM |