自從N年前Email完全整合至雲端(Hotmail、Outlook.com)後,因為手頭上有某工作信箱來自不同的Domain,接收都還好解決,但一直以來深受代表信箱(on behalf)所困擾,因此如果要用某工作信箱發信,只能乖乖切回單位的WebMail介面上發信,實在是非常不方便。日前想到在Office Outlook 2013建立原本Email帳號,但設定用來傳送Email,藉此解決工作信箱之發信代表帳號化問題,但是衍生出另外的問題便是...寄件備份根本無法自動存在Outlook.com中,現行的Office Outlook 2013是不允許POP3/SMTP等級的帳號與Exchange等級的帳號,進行跨Email帳號信件拖曳方法的備份動作。
要解決這個問題只有一種方式,就是把每封你在Office Outlook 2013中,利用工作用帳號寄出的信件,一律密件副本(BCC)一份回到Outlook.com中,並在該處設定Sender Address contains規則,讓它自動Move到寄件備份,這樣一來Email完全整合到雲端才有其可能性。
有了這樣合理的想法,接下來遇到的問題就是,你怎麼可能在每一封工作性Email發出後,都「記得」在BCC欄位中填入你要轉寄的Email位址呢?答案就是要靠寫程式啦!請跟著以下的步驟進行即可。
Step 1. 先去Office Outlook 2013中,把開發者工具打開,才好寫VBA。
Step 2. 在左邊視窗中移到ThisOutlookSession後點兩下,在右視窗中下拉Application及ItemSend,接下來進行下列程式碼的設計!
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) If Item.Class = olMail Then If Item.SendUsingAccount.DisplayName = "你的OutlookMailProfile名稱" Then Dim oRecipient As Recipient Set oRecipient = Item.Recipients.Add("你的EmailAddress") oRecipient.Type = olBCC oRecipient.Resolve Set oRecipient = Nothing End If End If End Sub
在這裡也藉機會說明一下事情,以免有人重複實驗浪費時間:
有網友來信詢問如何得知「OutlookMailProfile名稱」,請詳見下圖步驟,在Step.4即可得知「OutlookMailProfile名稱」。
相關連結:從VBA巨集談Office之自我數位簽章
Office Outlook VBA BCC SendEmail CarbonCopy Clone