2017-09-01 57 views
0

我的最終目標是找到一種方法來標記我要發送的電子郵件,並提醒我今天的日期和時間加上x天的時間,以便發送電子郵件的人和我自己。多年以來,我在Excel中生成新的郵件項目時都能夠做到這一點。我遇到的問題是使用Outlook 2016中的當前項目執行此操作。Outlook BCC不夠快速解析名稱?

從Excel中,我將郵件標記爲收件人的後續郵件,然後是BCC自己。當電子郵件發送時,它會彈回給我,並且我收到提醒,因爲我是收件人。

我使用Outlook VBA的第一種方法是爲電子郵件添加一個提醒我自己和一個類別。我遇到的問題是,一旦電子郵件發送,它會爲我自己刪除提醒,但不是收件人。該類別仍然會附加。所以我決定切換並嘗試使用Excel的方法。

此代碼中的所有內容都很棒。電子郵件地址已附加,所有提示都在工作之前,提醒日期是正確的。除了一件事以外,所有的工作。我的電子郵件地址在英國廣播公司線沒有解決或解決不夠快,我不知道。錯誤消息爲:「操作失敗,消息傳遞界面返回了未知錯誤,如果問題仍然存在,請重新啓動Outlook,無法解析收件人。」

任何人都知道發生了什麼事情,或者如果有任何方法強制Outlook在發送之前解析此電子郵件地址?

Private Sub Application_ItemSend(ByVal olItem As Object, Cancel As Boolean) 

    Dim response As Integer 
    Dim DaysToRemind As Byte 

    response = MsgBox("Would you like to delay send this email?", vbYesNo) 

    On Error GoTo Skip 
    If response = vbYes Then olItem.DeferredDeliveryTime = Format(Date, "m/d/yyyy") & " 4:00:00 PM" 

    On Error GoTo Skip 
    If response = vbNo Then olItem.DeferredDeliveryTime = Now() - 1 

    prompt$ = "Do you want to flag this message for followup?" 

    If MsgBox(prompt$, vbYesNo + vbQuestion + vbMsgBoxSetForeground, "Add flag?") = vbYes Then 
     DaysToRemind = InputBox("How many days to remind?", "Days Till Reminder", 3) 

     With olItem 
      .FlagStatus = olFlagMarked 
      .FlagRequest = "Follow Up" 
      .FlagDueBy = Now + DaysToRemind 
      .Categories = "Waiting on Response" 
      .BCC = "[email protected]" 
      '.Save 
      .Send 
     End With 

    End If 

Skip: 

End Sub 

一些工具與在此之後,我不得不結束了設立規則做一切我想做的事,但它得到了我什麼,我想基本上是。

Private Sub Application_ItemSend(ByVal olItem As Object, Cancel As Boolean) 

Dim response As Integer 
Dim DaysToRemind As Byte 

response = MsgBox("Would you like to delay send this email?", vbYesNo) 

On Error GoTo Skip 
If response = vbYes Then olItem.DeferredDeliveryTime = Format(Date, "m/d/yyyy") & " 4:00:00 PM" 

On Error GoTo Skip 
If response = vbNo Then olItem.DeferredDeliveryTime = Now() - 1 

Des = MsgBox("Do you want to flag this message for followup?", vbYesNo + vbQuestion + vbMsgBoxSetForeground, "Add flag?") 

If Des = vbYes Then 
    DaysToRemind = InputBox("How many days to remind?", "Days Till Reminder", 3) 

    With olItem 
     .FlagStatus = olFlagMarked 
     .FlagRequest = "Follow Up" 
     .FlagDueBy = Now + DaysToRemind 
     If Right(.Subject, 4) <> " (T)" Then .Subject = .Subject & " (T)" 
     Set myEmail = .recipients.Add("[email protected]") 
     myEmail.Type = olBCC 
     myEmail.Resolve 
     .Save 
    End With 
End If 

If Des = vbNo Then 
    If Right(olItem.Subject, 4) = " (T)" Then olItem.Subject = Left(olItem.Subject, Len(olItem.Subject) - 4) 
End If 

Skip: 

End Sub 

感謝所有

+0

只是一個想法,但你缺少.TO地址 - 您要發送電子郵件沒有收件人,但只有.BCC - 或者我不完全理解你在做什麼。 – BobSki

+0

此代碼在我輸入電子郵件並點擊發送按鈕後運行,所以我已經填寫了TO部分,主題和正文。然後它會問我是否要延遲交付到下午4點(如果消息不是非常重要的話)或者我想添加提醒。如果我添加提醒,我希望它能密碼我的電子郵件地址。 –

+0

一旦你做.BCC行 - 做一個睡眠2000年 - 然後檢查您的電子郵件地址是否有.SEND。這將是我想嘗試 – BobSki

回答

0

你不應該在處理該非常項Application.ItemSend事件處理程序調用MailItem.Send。讓Outlook繼續默認行爲。
你應該還沒有通過設置BCC屬性替換所有 BCC收件人:打電話MailItem.Recipients.Add並設置Recipient.Type屬性爲olBCC

+0

謝謝,經過多一點搜索,我發現如何做你所描述的,並得到Outlook來解決名稱。我不得不設置一條規則來標記消息,以便在我回來時做其他事情。 –