Я бы хотел, чтобы Outlook проверял мою электронную почту реже. Я знаю о группах отправки и получения, но, насколько я понимаю, если он проверяет электронную почту через Exchange, этот параметр не имеет значения, а проверка электронной почты происходит мгновенно. Чтобы избежать нарушения рабочего процесса, я хотел бы, чтобы он показывал мне новые электронные письма каждые 30, 60 или в любую минуту. Есть ли способ сделать это со стороны пользователя (я не администратор)? Я могу сделать это вручную, нажав «работать в автономном режиме», но я бы хотел, чтобы Outlook сделал это для меня.

спасибо Бен

2 ответа2

0

При использовании учетной записи Exchange Outlook не периодически опрашивает сервер на наличие новых сообщений, что необходимо для учетных записей POP3 или IMAP. Вместо этого Exchange Server использует push-уведомления для информирования клиента Outlook о поступлении новых сообщений.

По этой причине, только вы контролируете , как часто Перспектива проверяет почту из учетной записи Exchange , кнопка Работать автономно. Все остальные параметры отправки и получения в приложении Outlook не влияют на учетную запись Exchange. К сожалению, Outlook не имеет каких-либо опций в пользовательском интерфейсе для указания перехода в автономный режим и онлайн по расписанию.

Варианты / обходные пути для управления поведением отправки / получения в Outlook с учетной записью Exchange:

  1. Вручную вызовите кнопку « Работа в автономном режиме» , если вы хотите проверить наличие новой почты. Помните, что пока вы не в сети, отправленные вами сообщения не будут отправляться, пока вы не вернетесь в сеть.
  2. Создайте иллюзию Outlook не получил ни одной почты, пока вы не готовы посмотреть на нее:

    A. Отключите все уведомления о новых сообщениях в настройках Outlook

    Б. Создайте пользовательское представление для папки «Входящие», в котором скрываются новые сообщения, полученные сегодня. Используйте его, если вы не хотите знать о новом письме, которое вы недавно получили.

Вариант 2 имеет свои недостатки. Безусловно, лучшая работа, которую я нашел, - это ручное использование кнопки « Работа в автономном режиме» .

-1

Единственное решение, которое я могу придумать, заключается в запуске некоторого VBA, который запускает функцию «Отправить / Получить» каждые х минут.

Основываясь на этом ответе от переполнения стека, этом ответе на MSDN и нескольких незначительных изменениях, я думаю, что это решение должно работать.

Поместите следующий код в модуль ThisOutlookSession (Инструменты -> Макросы -> Редактор VB):

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

И следующий код в новом модуле 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

После запуска (и отключения push или любых существующих таймеров) этот код будет запускаться каждые 30 минут и инициировать отправку и получение. Поскольку у меня нет Outlook, подключенного к Exchange, я не могу проверить, действительно ли это работает.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .