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?

Andrew Talbot
fonte
1
Então você quer atrasar o envio das mensagens ou atrasá-lo recebendo as mensagens? Talvez ele devesse tirar o servidor de troca do seu telefone.
Raystafarian
Obrigado pela resposta. Ele não pode tirar o servidor do telefone porque recebe outros emails. É só que os meus geralmente não são importantes o suficiente para serem resolvidos até o horário comercial (eu trabalho no turno final)
Andrew Talbot
Então, seria melhor atrasar os que você envia ao invés do que ele recebe. Eu tentaria usar o Atraso na entrega opções, ou talvez criar uma regra referenciando-as
Raystafarian
Sim, a questão é que não seria para todas as mensagens, apenas as enviadas depois das 5 da tarde. Existe uma maneira de ligá-lo ao relógio assim?
Andrew Talbot

Respostas:

1

OK. Então coloque isso em ThisOutlookSession através de developer guia em visual basic

O sub particular verificará seus itens de e-mail que estão to 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 enviar às 8h código, 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 provenientes de Aqui

Raystafarian
fonte
1

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 = "[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, deverá clicar em "Enviar" novamente ou ela não será enviada.

gm2
fonte
Obrigado por isso !! Duas perguntas, no entanto. 1) Existem alguns e-mails importantes que eu preciso enviar para ele depois do horário; se eu abrir a mensagem e clicar em Enviar, ela ainda enviará? 2) Isso ainda entregará mensagens enviadas para um Grupo de Distribuição do qual ele faz parte?
Andrew Talbot
1) Não, você precisará definir e verificar uma condição para isso. Adicionando And Item.Importance < 2 _ logo abaixo If InStr(... permitirá que as mensagens enviadas ao chefe enviado com 'Alta Importância' sejam sempre entregues imediatamente. Ref 2) sim. Se for uma lista de distribuição do Exchange, o endereço de e-mail no campo Para não corresponderá a bossEmail; se é uma lista de contatos do Outlook, em seguida, o InStr(Item.To, ";") = 0 A condição permitirá que as mensagens enviadas para o chefe e outros destinatários sejam enviadas imediatamente.
gm2