2012-09-27 25 views
0

我正在寫一個Outlook 2010加載項與VSTO,其中一部分將自動添加正確的電子郵件簽名到一個新的AppointmentItem。我遇到的問題是如何確定哪個簽名是正確的。例如,我在Outlook中設置了2個電子郵件簽名,根據我的電子郵件來自哪個地址,它有使用規則。我怎樣才能訪問這些規則?展望VSTO - 根據用戶確定正確的'電子郵件'簽名

我的問題不在於finding the signature files,而是基於用戶的設置應用正確的規則。有任何想法嗎?

回答

0

我結束了與該鍵爲電子郵件地址創建一個字典對象解決這和值作爲文件路徑:

private Dictionary<string, string> signatureDictionary() 
     { 
      string sigDataDir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\Microsoft\Signatures"; 
      Dictionary<string, string> returnValue = new Dictionary<string,string>(); 
      Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6676", false); 
      string[] str = key.GetSubKeyNames(); 
      foreach (string s in str) 
      { 
       Microsoft.Win32.RegistryKey subKey = key.OpenSubKey(s, false); 
       if (subKey.GetValue("New Signature") != null) 
       { 
        returnValue.Add(System.Text.Encoding.Unicode.GetString(subKey.GetValue("Account Name") as 
         Byte[],0,(subKey.GetValue("Account Name") as Byte[]).Length - 2) 
         , Path.Combine(sigDataDir,System.Text.Encoding.Unicode.GetString(
         subKey.GetValue("New Signature") as Byte[], 0, (subKey.GetValue("New Signature") as 
         Byte[]).Length - 2) + @".rtf")); 
       } 
      } 
      key.Close(); 
      return returnValue; 
     } 

This answer到類似的問題,最初我指出了正確的方向,並找出,當一個簽名已被設置爲該帳戶「新簽名」密鑰僅填充。毫無疑問,會出現這種情況,但這並不適用於我目前的問題。由於我在編輯VSTO中的電子郵件時使用了WordEditor,因此我在此函數中使用了RTF文件,但在同一目錄中也有.HTM和.TXT文件,因此如果您願意,可以使用這些文件。

0

您可以使用下面的代碼訪問規則。可以遍歷他們,並得到了規則類型和動作

應用是Outlook.Application的當前實例

Outlook.Rules rules= app.Session.DefaultStore.GetRules(); 
foreach (Outlook.Rule r in rules) 
{ 

} 
+0

不是我正在尋找的東西 - 它顯示了所有文件夾的規則(例如將電子郵件從X移動到某個文件夾),但不包括簽名規則(當我有簽名對話框時,這些規則是根據「默認簽名」標題) –

+0

我不相信有一種方法,雖然COM對象。您可以通過簽名目錄訪問它們,該目錄可以在%AppData%\ Roaming \ Microsoft \ Signatures – Sorceri

+0

中找到。是的,獲取文件本身不是問題 - 根據默認簽名找到* correct *文件是問題。 –