Esta solução é basicamente igual à proposta por Raystafarian, mas com lógica simplificada.
Usar:
1. No Outlook, abra o editor de código, Alt + F11 .
2. Em Projeto1 & gt; Objetos do Microsoft Outlook, clique duas vezes em 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 & gt; Opções do Outlook & gt; 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 = "boss@company.net"
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, deverá clicar em "Enviar" novamente ou ela não será enviada.