2015-06-16 78 views
0

我經常想改變當前打開的郵件 發送數據。這是深受下面的代碼完成:展望VBA - 設置sentonbehalf和刷新ActiveInspector

Sub AktiveMailSetVonHotline() 
    Dim oMail As Outlook.MailItem 
    Set oMail = ActiveInspector.CurrentItem 
    oMail.SentOnBehalfOfName = "[email protected]" 
End Sub` 

唯一的問題/缺點是: 運行後宏我看不到發件人被設置爲所需。爲此,我想刷新可見郵件(檢查器窗口)

+0

我搶的電子郵件在一個公共文件夾,然後通常只需點擊回覆 - 但郵件是應該的名義發出的「熱線@ ......」我能很快地設置這個與上面的代碼。但是,我在Outlook窗口中看不到任何更改 - 它仍然在那裏顯示我的個人電子郵件地址 – Volker

回答

1

爲了使從標籤顯示正確的值,你需要設置使用MailItem.PropertyAccessor.SetProperty的PR_SENT_REPRESENTING_EMAIL_ADDRESS屬性(DASL名http://schemas.microsoft.com/mapi/proptag/0x0065001F)。

UPDATE:

作爲一個測試,你可以嘗試從OutlookSpy運行下面的腳本 - 在Outlook中創建新郵件,單擊郵件檢查的OutlookSpy絲帶「腳本」按鈕,粘貼下面的腳本,單擊運行:

set Msg = Application.ActiveInspector.CurrentItem 
Msg.PropertyAccessor.SetProperty "http://schemas.microsoft.com/mapi/proptag/0x0065001F", "[email protected]" 
+0

我努力用這個提示,但它只是擊敗了我。我可以在當前打開的郵件上運行PropertAccessor。不過,我可能會使用錯誤的模式/值。我也沒有找到所有Schema的列表。此外,它可能是屬性設置正確,但窗口不刷新。 – Volker

+0

請參閱上述更新的答案。 –

+0

有一個警告 - 如果您將PR_SENT_REPRESENTING_EMAIL_ADDRESS設置爲SMTP地址並在未保存的情況下發送郵件,則可能會以NDR結束。您需要將該屬性重置回Item.Send或Application.ItemSend事件處理程序中的EX類型地址。 –

0

看起來您似乎對MailItem類的SendUsingAccount屬性感興趣,該類允許設置一個Account對象,該對象表示MailItem所在的帳戶被髮送。例如:

Sub SendUsingAccount() 
    Dim oAccount As Outlook.account 
    For Each oAccount In Application.Session.Accounts 
    If oAccount.AccountType = olPop3 Then 
    Dim oMail As Outlook.MailItem 
    Set oMail = Application.CreateItem(olMailItem) 
    oMail.Subject = "Sent using POP3 Account" 
    oMail.Recipients.Add ("[email protected]") 
    oMail.Recipients.ResolveAll 
    oMail.SendUsingAccount = oAccount 
    oMail.Send 
    End If 
    Next 
End Sub 
+0

如果要將SentOnBehalfOfName設置爲您可以發送其名稱的另一個Exchange對象的名稱,則設置時不會使用單獨的Account對象SendUsingAccount屬性。 –

+0

目前我們不知道海報打算做什麼。可能沒有必要使用SentOnBehalfOfName屬性。 –

+0

我認爲沒有必要訪問其他帳戶(在我的情況) – Volker