Re: Outlook SendUsingAccount to change from account

Discussion in 'Microsoft Outlook VBA Programming' started by Ken Slovak - [MVP - Outlook], Jun 8, 2009.

  1. Application_ItemSend() is too late, the item has already been submitted to
    the mail transport by that time with the original email address. Handle that
    earlier in the Item.Send() 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


    "p912s" <> wrote in message
    news:p...
    >
    > Hello! I have searched all over the web and have been unable to locate a
    > solution... the closest I came was a thread on here so I joined.
    >
    > My problem is sending a message after changing the sending account in
    > VBA. I get an error - "You Cannot Send An Item That Is Already In The
    > Process Of Being Sent"
    >
    > Here is the thread that talked about a solution using a timer to get
    > the message sent but I don't understand how to implement a timer in
    > Outlook - http://tinyurl.com/r79d4w
    >
    > And here is my code - fairly simple, it gathers up the pop3 accounts
    > and presents them in a popup message to select the account to send from.
    > The selecting and changing accounts works fine but the messages can't be
    > sent. I have documented in the code where the error happens.
    >
    > Thanks.
    >
    >
    >
    >
    > Option Explicit
    >
    > Private Sub Application_ItemSend(ByVal Item As Object, Cancel As
    > Boolean)
    > Dim oAccount As Outlook.Account
    > Dim strDefaultAccount As String, strMsg As String, strID As String
    > Dim strAccounts(100)
    > Dim c As Integer, i As Integer
    > Dim result As Variant
    >
    > c = 1
    >
    > 'get default account
    > strDefaultAccount = Application.Session.Accounts(1).DisplayName
    >
    > 'get pop3 accounts
    > For Each oAccount In Application.Session.Accounts
    > If oAccount.AccountType = olPop3 Then
    > strAccounts(c) = c & " - " & oAccount
    > 'Debug.Print strAccounts(c)
    > c = c + 1
    > End If
    > Next
    >
    > 'build inputbox account list
    > strMsg = "Click Ok to use default account or enter the number of
    > the account to use...." & vbCrLf
    > For i = 1 To c
    > strMsg = strMsg & vbCrLf & strAccounts(i)
    > Next i
    >
    > '********************************************************
    > 'message id
    > 'I think this is the id i need to recall and send the message?
    > strID = Item.ConversationIndex
    > '********************************************************
    >
    > 'display inputbox
    > result = InputBox(strMsg, "Select Sending Account",
    > strDefaultAccount)
    >
    > 'act on user input
    > Select Case result
    > Case strDefaultAccount
    > 'clicked ok - send from default account
    > Cancel = True
    > Set Item.SendUsingAccount =
    > Application.Session.Accounts(1)
    > '********************************************************
    > 'send error - "You Cannot Send An Item That Is Already In
    > The Process Of Being Sent"
    > Item.Send
    > '********************************************************
    > Case IsNumeric(result)
    > 'typed a number
    > If result <= i Then
    > Cancel = True
    > Set Item.SendUsingAccount =
    > Application.Session.Accounts(result)
    > '********************************************************
    > 'send error - "You Cannot Send An Item That Is Already
    > In The Process Of Being Sent"
    > Item.Send
    > '********************************************************
    > Else
    > 'entered incorrect number - stay in message
    > Cancel = True
    > End If
    > Case Else
    > 'clicked cancel or invalid entry - stay in message
    > Cancel = True
    > End Select
    > End Sub
    >
    >
    > --
    > p912s
    > ------------------------------------------------------------------------
    > p912s's Profile: http://www.thecodecage.com/forumz/member.php?userid=393
    > View this thread:
    > http://www.thecodecage.com/forumz/showthread.php?t=104268
    >
     
    Ken Slovak - [MVP - Outlook], Jun 8, 2009
    #1
    1. Advertisements

  2. In ThisOutlookSession put something like this at the module level:

    Dim WithEvents colInsp As Outlook.Inspectors
    Dim WithEvents oMail As Outlook.MailItem

    In the Application_Startup() event handler instantiate the Inspectors
    collection:

    Set colInsp = Application.Inspectors

    That will let you handle the NewInspector() event. In that event handler
    something like this:

    If Inspector.CurrentItem.Class = olMail Then
    Set oMail = Inspector.CurrentItem
    End If

    That will let you handle the oMail.Send() event, which fires when you click
    the Send button.

    --
    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


    "p912s" <> wrote in message
    news:p...
    <snip>
    > Thanks for the reply!
    >
    > The above code is run from ThisOutlookSession so that when you click
    > the Send button on a message you're prompted to set the sending account.
    > Which as you point is to late to change the account.
    >
    > In that code window my only choices are General and Application... the
    > only way I know I could get the Item.Send event would be to call it from
    > a button on a form. And I have tried that, in the Application.Send, set
    > Cancel =True and then call my form. And then from the form, set the
    > sending account and try and send the message, but I get the same error.
    >
    > Is there any way to change the sending account after I have clicked the
    > Send Button?
    >
    > Or can I edit the default email message and place my code behind the
    > Send Button?
    >
    > Thanks.
    >
    >
    > --
    > p912s
    > ------------------------------------------------------------------------
    > p912s's Profile: http://www.thecodecage.com/forumz/member.php?userid=393
    > View this thread:
    > http://www.thecodecage.com/forumz/showthread.php?t=104268
    >
     
    Ken Slovak - [MVP - Outlook], Jun 8, 2009
    #2
    1. Advertisements

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Bruce

    .sendusingaccount ? for OL 2007

    Bruce, Jun 1, 2007, in forum: Microsoft Outlook VBA Programming
    Replies:
    12
    Views:
    1,133
    Bruce
    Jun 5, 2007
  2. Outlook 2007: SendUsingAccount - update infobar

    , Jul 21, 2008, in forum: Microsoft Outlook VBA Programming
    Replies:
    6
    Views:
    2,546
    Sue Mosher [MVP-Outlook]
    Jul 22, 2008
  3. p912s

    SendUsingAccount to change from account

    p912s, Jun 8, 2009, in forum: Microsoft Outlook VBA Programming
    Replies:
    2
    Views:
    6,139
    Dmitry Streblechenko
    Jun 9, 2009
  4. Michael Bednarek

    Re: .SendUsingAccount

    Michael Bednarek, Jun 2, 2012, in forum: Microsoft Outlook VBA Programming
    Replies:
    0
    Views:
    1,011
    Michael Bednarek
    Jun 2, 2012
  5. nemo1966

    Change send account in Outlook

    nemo1966, Oct 21, 2012, in forum: Microsoft Outlook VBA Programming
    Replies:
    0
    Views:
    577
    nemo1966
    Oct 21, 2012
Loading...

Share This Page