Configure o Outlook 2010 (Exchange) para verificar emails com menos frequência [duplicado]

0

Gostaria de ter o Outlook verificando meu e-mail com menos frequência. Eu sei sobre os grupos de envio / recebimento, mas pelo que entendi, se está verificando e-mail através do Exchange, essa configuração não importa e a verificação de e-mail é instantânea. Para evitar a interrupção do fluxo de trabalho, gostaria que apenas me mostrasse novos e-mails a cada 30 ou 60 minutos. Existe uma maneira de fazer isso a partir do final do usuário (eu não sou um administrador)? Posso fazer isso manualmente clicando em "Trabalhar off-line", mas gostaria que o Outlook fizesse isso por mim.

obrigado Ben

    
por Ben 12.01.2015 / 17:48

2 respostas

0

Ao usar uma conta do Exchange, o Outlook não pesquisa periodicamente no servidor novas mensagens, conforme necessário, com contas POP3 ou IMAP. Em vez disso, o Exchange Server usa notificações push para informar o cliente Outlook quando novas mensagens chegaram.

Por esse motivo, o controle somente que você tem sobre a frequência com que o Outlook verifica mensagens de uma conta do Exchange é o botão Trabalhar Offline . Todas as outras opções de envio e recebimento no aplicativo do Outlook não têm efeito com uma conta do Exchange. Infelizmente o Outlook não tem nenhuma opção na interface do usuário para especificar ficar offline e online de acordo com um cronograma.

Suas opções / soluções alternativas para controlar o comportamento de envio / recebimento no Outlook com uma conta do Exchange são:

  1. Invoque manualmente o botão Trabalhar off-line quando quiser verificar novos e-mails. Tenha em mente que, enquanto você estiver enviando mensagens off-line, não serão enviadas até que você volte a ficar on-line.
  2. Crie a ilusão O Outlook não recebeu nenhum email até que você esteja pronto para analisá-lo:

    Desativar todas as notificações Nova mensagem nas Opções do Outlook

    Crie uma exibição personalizada para a sua pasta Caixa de Entrada, que esconde novas mensagens recebidas hoje. Use-o quando você não quiser saber sobre novos e-mails recebidos recentemente.

A opção 2 tem suas falhas. De longe, o melhor trabalho que encontrei é empregar manualmente o botão Trabalhar Offline .

    
por 12.01.2015 / 18:06
-1

A única solução que consigo pensar envolve a execução de algum VBA que aciona a funcionalidade "Enviar / Receber" a cada x minutos.

Com base em esta resposta do Stack Overflow , esta resposta no MSDN e alguns pequenos ajustes Acho que esta solução deve funcionar.

Coloque o seguinte código no módulo ThisOutlookSession (Ferramentas - > Macros - > VB Editor):

Private Sub Application_Quit()
    If TimerID <> 0 Then Call DeactivateTimer 'Turn off timer upon quitting **VERY IMPORTANT**
End Sub

Private Sub Application_Startup()
    Call ActivateTimer(30) 'Set timer to go off every 30 minutes
End Sub

E o seguinte código em um novo módulo VBA:

Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerfunc As Long) As Long
Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long

Public TimerID As Long 'Need a timer ID to eventually turn off the timer. If the timer ID <> 0 then the timer is running

Public Sub ActivateTimer(ByVal nMinutes As Long)
    nMinutes = nMinutes * 1000 * 60 'The SetTimer call accepts milliseconds, so convert to minutes
    If TimerID <> 0 Then Call DeactivateTimer 'Check to see if timer is running before call to SetTimer
    TimerID = SetTimer(0, 0, nMinutes, AddressOf TriggerTimer)
    If TimerID = 0 Then
        MsgBox "The timer failed to activate. Checking of email will not happen."
    End If
End Sub

Public Sub DeactivateTimer()
    Dim lSuccess As Long
    lSuccess = KillTimer(0, TimerID)
    If lSuccess = 0 Then
        MsgBox "The timer failed to deactivate."
    Else
        TimerID = 0
    End If
End Sub

Public Sub TriggerTimer(ByVal hwnd As Long, ByVal uMsg As Long, ByVal idevent As Long, ByVal Systime As Long)
    'keeps calling every X Minutes unless deactivated
    If idevent = TimerID Then Call SyncOL
End Sub

Public Sub SyncOL()
    ' Synchronizes (ie sends/receives) OL folders.
    ' Ref: http://msdn.microsoft.com/en-us/library/ff863925.aspx

    Dim appOL As Outlook.Application, objNsp As Outlook.NameSpace
    Dim colSyc As Outlook.SyncObjects, objSyc As Outlook.SyncObject
    Dim i As Integer

    On Error GoTo SyncOL_Err

    ' Use late binding to avoid the "Reference" issue.
    If isAppThere("Outlook.Application") = False Then
        Set appOL = CreateObject("Outlook.Application")  ' OL not open
    Else
        Set appOL = GetObject(, "Outlook.Application")  ' OL already open
    End If

    Set objNsp = appOL.Application.GetNamespace("MAPI")
    Set colSyc = objNsp.SyncObjects

    For i = 1 To colSyc.Count
        Set objSyc = colSyc.Item(i)       
        ' Debug.Print objSyc.Name
        objSyc.start
    Next

    ' Call MsgBox("Outlook synchronization initiated ...", vbInformation)

    SyncOL_Exit:
    Set appOL = Nothing: Set objNsp = Nothing: Set colSyc = Nothing: Set objSyc = Nothing
    Exit Sub

    SyncOL_Err:
    MsgBox "error=" & Err.Number & " " & Err.Description & " in SyncOL()"
    Resume SyncOL_Exit
End Sub

Assim que estiver em funcionamento (e você desativar o push ou qualquer temporizador existente), esse código será executado a cada 30 minutos e acionará um envio e recebimento. Como não tenho o Outlook conectado ao Exchange, não posso verificar se isso realmente funciona.

    
por 12.01.2015 / 18:26