我有通過電子郵件發送的表單,可以通過不同的人這樣的旅行。在Infopath中獲取發件人電子郵件地址
Person A --> Person B --> Person C
我想
因爲一個人是不是在形式是由人C.所以一個人必須由人B.發送的電子郵件的副本治療者A到通知總是同一個人,我認爲把他/她放在副本中的最佳方式是使用B人收到的電子郵件的「發件人」字段並將其複製。
但是我怎樣才能找到這個地址與infopath,我怎麼能把它放到我的電子郵件數據連接?
我有通過電子郵件發送的表單,可以通過不同的人這樣的旅行。在Infopath中獲取發件人電子郵件地址
Person A --> Person B --> Person C
我想
因爲一個人是不是在形式是由人C.所以一個人必須由人B.發送的電子郵件的副本治療者A到通知總是同一個人,我認爲把他/她放在副本中的最佳方式是使用B人收到的電子郵件的「發件人」字段並將其複製。
但是我怎樣才能找到這個地址與infopath,我怎麼能把它放到我的電子郵件數據連接?
我今天有同樣的問題,我自己也找不到太多的答案。
所以......我自己做了一些工作,想出了一些解決方案。
首先,我不認爲有任何方法使用InfoPath OM獲取/設置「發件人」地址。這意味着你將不得不使用下列選項之一:
無編號:
您將被限制爲形式,其中「人A」可以把自己的電子郵件地址,並使用上提供了一個場在CC。爲後續階段。這是唯一的方式,雖然它給用戶帶來額外的負擔,但它具有提供靈活性的好處。
代碼:
編寫自己的代碼中使用Outlook互操作或System.Net.Mail發送郵件,然後你就可以手動設置反正所有的地址。
如果您正在使用AD或別的東西,那麼你可以總是使用System.DirectoryServices.AccountManagement目前使用的電子郵件地址。
基於我無法找到任何文件備份的假設。該InfoPath使用與默認商店關聯的帳戶使用EmailSubmitConnection發送電子郵件。您應該可以使用Outlook Interop來查找InfoPath將使用的地址。
下面是一個代碼示例:
using Outlook = Microsoft.Office.Interop.Outlook;
public string GetDefaultSenderAddress()
{
// This actually opens outlook in the same way as InfoPath does to send the message.
// which can be slow.
string DefaultAddress = string.Empty;
Outlook.Application OutlookApplication = new Outlook.Application();
string DefaultStoreId = OutlookApplication.Session.DefaultStore.StoreID;
foreach (Outlook.Account Account in OutlookApplication.Session.Accounts)
{
if (Account.DeliveryStore.StoreID == DefaultStoreId)
{
DefaultAddress = Account.SmtpAddress;
}
}
// Note you probably won't want to quit if you are about to send the email.
// However I have noticed that this doesn't seem to close Outlook anyway.
OutlookApplication.Quit();
return DefaultAddress;
}
您可能需要在不同的賬戶類型的情況等提供了幾個檢查,但我相信它會工作。 (我測試了它的情況,它確實)。
注意:當然這會打開一個outlook實例,您將不得不關閉該實例。它可能會很慢。除非展望已經開放,在這種情況下,它將非常迅速。無論如何,從InfoPath Outlook發送時必須打開,所以如果你在發送之前這樣做,那麼應該沒有明顯的差異。
我會建議使用無代碼/代碼選項的組合,以便提供一個自動完成的返回地址以節省用戶時間。但是,如果用戶希望將電子郵件返回到其他地址(如果有錯誤),則可以更正。
希望你覺得有用。