Как я могу отложить сообщения, отправленные конкретному человеку после определенного времени?

1

Мой босс хочет, чтобы все сообщения, которые я отправлял ему после 5 вечера, доставлялись в 8 часов утра следующего дня. Есть ли способ настроить это как правило в Outlook, чтобы мне не приходилось каждый раз менять его вручную?

Эндрю Тэлбот
источник
1
Итак, вы хотите отложить отправку сообщений или отложить получение сообщений? Может быть, он должен просто снять сервер обмена со своего телефона ..
Raystafarian
Спасибо за ответ. Он не может снять сервер со своего телефона, потому что он получает другие электронные письма. Просто мои обычно не настолько важны, чтобы решать их до рабочего дня (я работаю в позднюю смену)
Эндрю Тэлбот,
Так что было бы лучше отложить те, что вы посылаете, а не то, что он получает. Я бы попробовал использовать опции отложенной доставки , или, возможно, создать правило, ссылающееся на них
Raystafarian
Да, проблема в том, что это будет не для всех сообщений, а только для тех, которые отправлены после 17:00. Есть ли способ привязать его к часам?
Эндрю Тэлбот

Ответы:

1

Хорошо. Так что вставьте это ThisOutlookSessionчерез developerвкладку вvisual basic

Приватный саб проверит ваши почтовые отправления, которые являются toвашим боссом (измените электронную почту, я думаю, что она может быть чувствительна к регистру)

Если это для вашего босса, он запустит макрос, который проверяет время и задерживает его. У меня были некоторые проблемы с кодом отправки в 8 утра , возможно, вам придется возиться с этим.

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 = "boss@company.net" 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

Некоторые источники отсюда

Raystafarian
источник
1

Это решение в основном такое же, как предложено Райстафарианом, но с упрощенной логикой.

Использование:
1. В Outlook откройте редактор кода, Alt+ F11.
2. В Project1> Объекты Microsoft Outlook дважды щелкните ThisOutlookSession
3. Вставьте приведенный ниже код в редактор.
4. Измените адрес электронной почты и временной диапазон по мере необходимости.
5. Нажмите кнопку Сохранить и закройте окно редактора кода.
6. Измените безопасность макросов Outlook. Выберите «Файл»> «Параметры Outlook»> «Центр управления безопасностью». Нажмите «Настройки центра управления безопасностью», затем «Параметры макроса» и выберите « Уведомления для всех макросов».
7. Перезапустите Outlook и нажмите «Включить макросы» при появлении запроса.

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

Сообщения электронной почты, отправленные в соответствии с указанными условиями, будут помещены в папку «Исходящие» при нажатии кнопки «Отправить», но не будут доставлены до указанного времени. Для доставки сообщений приложение Outlook должно быть запущено в запланированное время доставки. Если вы открываете сообщение из папки «Исходящие», вы должны снова нажать «Отправить», иначе оно не будет отправлено.

gm2
источник
Спасибо тебе за это!! Хотя два вопроса. 1) Есть несколько важных писем, которые мне нужно отправить ему в нерабочее время; если я открою сообщение и нажму «Отправить», оно все еще будет отправлено? 2) Будет ли при этом доставляться сообщение, отправленное группе рассылки, частью которой он является?
Эндрю Тэлбот
1) Нет, вам нужно определить и проверить условие, чтобы выполнить это. При добавлении And Item.Importance < 2 _чуть ниже If InStr(...сообщения боссу, отправленные с «высокой важностью», всегда будут доставляться немедленно. Ссылка 2) Да. Если это список рассылки Exchange, тогда адрес электронной почты в поле «Кому» не будет совпадать, тогда bossEmail; если это список контактов Outlook, то InStr(Item.To, ";") = 0условие позволит немедленно отправлять сообщения, отправленные начальнику и другим получателям.
gm2