Como posso adiar mensagens enviadas para uma pessoa específica após um horário específico?

1

Meu chefe quer que todas as mensagens que eu enviar para ele depois das 17h sejam entregues às 8h da manhã seguinte. Existe uma maneira que eu possa configurar isso como uma regra no Outlook para que eu não precise alterá-lo manualmente todas as vezes?

    
por Andrew Talbot 25.07.2013 / 23:38

2 respostas

1

Ok. Portanto, coloque isso em ThisOutlookSession na guia developer em visual basic

O sub particular verificará seus itens de e-mail que são to do seu chefe (altere o e-mail, acho que pode ser sensível a maiúsculas e minúsculas)

Se for para o seu chefe, ele executará a macro que verifica a hora e a atrasa. Eu tive alguns problemas com o código send at 8am , você pode precisar mexer com isso.

Private Sub application_itemsend(ByVal item As Object, cancel As Boolean)
Dim myItem As mailItem
Set myItem = item
If myItem.Class = olMail And myItem.To = "[email protected]" Then
Call CheckSendTime
End If

End Sub

Public Sub CheckSendTime()
    Dim myobj As Object
    Dim myMail As mailItem
    Dim WkDay As String
    Dim MinNow As Integer
    Dim SendHour As Integer
    Dim SendDate As Date
    Dim SendNow As String

'Set Variables
SendDate = Now()
SendHour = Hour(Now)
MinNow = Minute(Now)
WkDay = Weekday(Now)
SendNow = Y

'Check if after 5PM
If SendHour > 17 Then           'After 5 PM
    SendHour = 34 - SendHour     'Send at 8 am next day
    SendDate = DateAdd("h", SendHour, SendDate)
    SendDate = DateAdd("n", -MinNow, SendDate)
    SendNow = N
End If

'Send the Email
  Set myobj = Application.ActiveInspector.CurrentItem
  If TypeOf myobj Is Outlook.mailItem Then
    Set myMail = myobj
    'Check if we need to delay delivery
    If SendNow = N Then
      myMail.DeferredDeliveryTime = SendDate
      End If
      Else: myMail.Send
    End If

End Sub

Alguns são provenientes de aqui

    
por 26.07.2013 / 22:45
1

Esta solução é basicamente igual à proposta por Raystafarian, mas com lógica simplificada.

Para usar:
No Outlook, abra o editor de código, Alt + F11 .
2. Em Projeto1 > Microsoft Outlook Objects clique duplo ThisOutlookSession
3. Cole o código abaixo no editor.
4. Modifique o endereço de email e o intervalo de tempo conforme necessário.
5. Clique no botão Salvar e feche a janela do editor de código.
6. Alterar a segurança da macro do Outlook: Clique em Arquivo > Opções do Outlook > Centro de confiança. Clique em Configurações da Central de Confiabilidade, depois em Configurações de Macro e selecione Notificações para todas as macros
7. Reinicie o Outlook e clique em Ativar Macros quando solicitado.

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

Dim bossEmail As String
Dim delaySendAt As Date
Dim currentHour As Integer
bossEmail = "[email protected]"
delaySendAt = (Date + 1) & " 8:01:00 AM"
currentHour = Hour(Now())

' Delay emails sent between 5PM and 8AM
If currentHour >= 17 Or currentHour < 8 Then
    ' where To field contains boss's email address (case insensitive)
    ' but don't delay message sent to boss and other recipients
    If InStr(1, Item.To, bossEmail, vbTextCompare) > 0 _
        And InStr(Item.To, ";") = 0 Then
        Item.DeferredDeliveryTime = delaySendAt
    End If
End If

End Sub

Os e-mails enviados que atendem às condições especificadas entrarão na pasta Caixa de saída quando o botão 'Enviar' for clicado, mas não será entregue até o horário especificado. Para que as mensagens sejam entregues, o aplicativo Outlook deve estar em execução no horário de entrega programado. Se você abrir uma mensagem da Caixa de saída, clique novamente em "Enviar" ou ela não será enviada.

    
por 27.07.2013 / 01:29