Мой босс хочет, чтобы все сообщения, которые я отправлял ему после 5 вечера, доставлялись в 8 часов утра следующего дня. Есть ли способ настроить это как правило в Outlook, чтобы мне не приходилось каждый раз менять его вручную?
Мой босс хочет, чтобы все сообщения, которые я отправлял ему после 5 вечера, доставлялись в 8 часов утра следующего дня. Есть ли способ настроить это как правило в Outlook, чтобы мне не приходилось каждый раз менять его вручную?
Ответы:
Хорошо. Так что вставьте это 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
Некоторые источники отсюда
Это решение в основном такое же, как предложено Райстафарианом, но с упрощенной логикой.
Использование:
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 должно быть запущено в запланированное время доставки. Если вы открываете сообщение из папки «Исходящие», вы должны снова нажать «Отправить», иначе оно не будет отправлено.
And Item.Importance < 2 _
чуть ниже If InStr(...
сообщения боссу, отправленные с «высокой важностью», всегда будут доставляться немедленно. Ссылка 2) Да. Если это список рассылки Exchange, тогда адрес электронной почты в поле «Кому» не будет совпадать, тогда bossEmail; если это список контактов Outlook, то InStr(Item.To, ";") = 0
условие позволит немедленно отправлять сообщения, отправленные начальнику и другим получателям.