0

VSTO を使用して Outlook 2010 アドインを作成しています。その一部は、新しい AppointmentItem に正しい電子メール署名を自動的に追加します。私が遭遇した問題は、どの署名が正しいかを判断する方法です。たとえば、Outlook で 2 つの電子メール署名を設定しています。これらには、電子メールの送信元アドレスに基づいた使用ルールがあります。これらのルールにアクセスするにはどうすればよいですか?

私の問題は、署名ファイルを見つけることではなく、ユーザーの設定に基づいて正しいルールを適用することです。何か案は?

4

2 に答える 2

0

以下のコードを使用してルールにアクセスできます。それらをループして、ルールの種類とアクションを取得できます

app は Outlook.Application の現在のインスタンスです

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

}
于 2012-09-27T21:25:45.337 に答える
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;
        }

同様の質問に対するこの回答は、最初に私を正しい方向に導き、「新しい署名」キーは、そのアカウントに署名が設定されている場合にのみ入力されることを理解しました。間違いなくこれがうまくいかない状況があるでしょうが、それは私の現在の問題のためにそれを整理します. 私は VSTO でメールを編集するときに WordEditor を使用するので、この関数では RTF ファイルを使用しますが、同じディレクトリに .HTM および .TXT ファイルもあるので、必要に応じてそれらを使用できます。

于 2012-10-10T20:35:52.777 に答える