Mi jefe quiere que todos los mensajes que le envíe después de las 5 p.m. se entreguen a las 8 a.m. de la mañana siguiente. ¿Hay alguna manera de configurar esto como una regla en Outlook para que no tenga que cambiarlo manualmente cada vez?
Mi jefe quiere que todos los mensajes que le envíe después de las 5 p.m. se entreguen a las 8 a.m. de la mañana siguiente. ¿Hay alguna manera de configurar esto como una regla en Outlook para que no tenga que cambiarlo manualmente cada vez?
Respuestas:
Bueno. Así que pon esto en ThisOutlookSession
la developer
pestaña envisual basic
El submarino privado verificará sus elementos de correo que son to
su jefe (cambie el correo electrónico, creo que distingue entre mayúsculas y minúsculas)
Si es para su jefe, ejecutará la macro que verifica el tiempo y lo retrasa. Tuve algunos problemas con el código de envío a las 8 a.m., es posible que deba jugar con eso.
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
Algunos provienen de aquí
Esta solución es básicamente la propuesta por Raystafarian pero con una lógica simplificada.
Para usar:
1. En Outlook, abra el editor de código, Alt+ F11.
2. En Project1> Microsoft Outlook Objects, haga doble clic en ThisOutlookSession
3. Pegue el código a continuación en el editor.
4. Modifique la dirección de correo electrónico y el rango de tiempo según sea necesario.
5. Haga clic en el botón Guardar y cierre la ventana del editor de código.
6. Cambie la seguridad de la macro de Outlook: haga clic en Archivo> Opciones de Outlook> Centro de confianza. Haga clic en Configuración del Centro de confianza, luego en Configuración de macro y seleccione Notificaciones para todas las macros
7. Reinicie Outlook y haga clic en Habilitar macros cuando se le solicite.
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
Los correos electrónicos enviados que cumplan las condiciones especificadas irán a la carpeta Bandeja de salida cuando se haga clic en el botón 'Enviar', pero no se entregarán hasta la hora especificada. Para que los mensajes se entreguen, la aplicación de Outlook debe ejecutarse a la hora de entrega programada. Si abre un mensaje desde la Bandeja de salida, debe hacer clic en 'Enviar' nuevamente o no se enviará.
And Item.Importance < 2 _
justo debajo If InStr(...
, los mensajes enviados al jefe con 'Alta importancia' siempre se enviarán de inmediato. Ref. 2) Sí. Si se trata de una lista de distribución de Exchange, la dirección de correo electrónico en el campo Para no coincidirá con bossEmail; Si se trata de una lista de contactos de Outlook, la InStr(Item.To, ";") = 0
condición permitirá que los mensajes enviados al jefe más otros destinatarios se envíen inmediatamente.