Jak mogę odroczyć wiadomości wysłane do określonej osoby po określonym czasie?

1

Mój szef chce, aby wszystkie wiadomości, które mu wysłałem po godzinie 17:00, zostały dostarczone o 8 rano następnego dnia. Czy jest jakiś sposób, aby ustawić to jako regułę w Outlooku, tak że nie muszę za każdym razem zmieniać go ręcznie?

Andrew Talbot
źródło
1
Więc chcesz opóźnić wysłanie wiadomości lub opóźnić otrzymanie wiadomości? Może powinien po prostu wyjąć serwer wymiany z telefonu ...
Raystafarian
Dzięki za odpowiedzi. Nie może zdjąć serwera z telefonu, ponieważ dostaje inne e-maile. To po prostu to, że moje nie są na tyle ważne, by zwracać się do godzin pracy (pracuję na późnej zmianie)
Andrew Talbot
Lepiej więc odłożyć te, które wysyłasz, a nie to, co otrzyma. Spróbowałbym skorzystać z opcji dostarczania opóźnienia , a może utworzyć regułę odwołującą się do nich
Raystafarian
Tak, problem nie dotyczy wszystkich wiadomości, tylko tych wysłanych po 17:00. Czy istnieje sposób na powiązanie go z zegarem w ten sposób?
Andrew Talbot

Odpowiedzi:

1

W porządku. Więc umieścić w tym ThisOutlookSessionpoprzez developerzakładkę wvisual basic

Prywatny sub będzie sprawdzał, czy nie masz elementów pocztowych, które są totwoim szefem (zmień adres e-mail, myślę, że może to uwzględniać wielkość liter)

Jeśli jest to dla twojego szefa, uruchomi makro, które sprawdza czas i opóźnia go. Miałem kłopoty z wysłaniem o 8 rano , może będziesz musiał się tym zająć.

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

Niektórzy pochodzą stąd

Raystafarian
źródło
1

To rozwiązanie jest zasadniczo takie samo, jak zaproponowane przez Raystafarian, ale z uproszczoną logiką.

Aby użyć:
1. W programie Outlook otwórz edytor kodu, Alt+ F11.
2. W Project1> Microsoft Outlook Objects kliknij dwukrotnie ThisOutlookSession
3. Wklej kod poniżej do edytora.
4. Zmień adres e-mail i zakres czasu, jeśli to konieczne.
5. Kliknij przycisk Zapisz i zamknij okno edytora kodu.
6. Zmień zabezpieczenia makr programu Outlook: kliknij opcję Plik> Opcje programu Outlook> Centrum zaufania. Kliknij Ustawienia Centrum zaufania, a następnie Ustawienia makra i wybierz Powiadomienia dla wszystkich makr.
7. Uruchom ponownie program Outlook i kliknij opcję Włącz makra po wyświetleniu monitu.

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

Wysyłane wiadomości e-mail spełniające określone warunki zostaną umieszczone w folderze Skrzynka nadawcza po kliknięciu przycisku „Wyślij”, ale nie zostaną dostarczone do określonego czasu. Aby wiadomości mogły zostać dostarczone, aplikacja Outlook musi działać w zaplanowanym czasie dostawy. Jeśli otworzysz wiadomość ze Skrzynki nadawczej, ponownie kliknij „Wyślij” lub wiadomość nie zostanie wysłana.

gm2
źródło
Dziękuję za to!! Jednak dwa pytania. 1) Istnieje kilka ważnych wiadomości e-mail, które muszę mu wysłać po godzinach; jeśli otworzę wiadomość i kliknę Wyślij, czy nadal będzie wysyłana? 2) Czy to nadal będzie dostarczać wiadomości wysyłane do grupy dystrybucyjnej, której jest częścią?
Andrew Talbot
1) Nie, musisz zdefiniować i sprawdzić warunek, aby to osiągnąć. Dodanie And Item.Importance < 2 _tuż poniżej If InStr(...pozwoli na wysyłanie wiadomości do bossa z „Dużą ważnością”, aby zawsze były dostarczane natychmiast. Ref 2) Tak. Jeśli jest to lista dystrybucyjna Exchange, adres e-mail w polu Do nie będzie pasował do bossEmaila; jeśli jest to lista kontaktów programu Outlook, InStr(Item.To, ";") = 0warunek umożliwi natychmiastowe wysłanie wiadomości do szefa i innych odbiorców.
gm2