2

Exchange Web サービスを使用して、Outlook Web Access でユーザー署名を設定しています。[オプション] > [設定] の下に署名が表示され、[送信するメッセージに署名を自動的に含める] チェックボックスがオンになっています。これもプログラムで設定します。

ただし、ユーザーが OWA で新しい電子メール メッセージを作成すると、署名が表示されません。これを回避するには、[オプション] > [設定] に移動し、[送信するメッセージに署名を自動的に含める] チェック ボックスをオフにして、保存し、もう一度チェック ボックスをオンにして保存します。

署名を設定するために使用するコードは次のようになります。

Folder rootFolder;
UserConfiguration OWAConfig;
rootFolder = Folder.Bind(service, WellKnownFolderName.Root);
OWAConfig = UserConfiguration.Bind(service, "OWA.UserOptions",rootFolder.ParentFolderId, UserConfigurationProperties.All);

OWAConfig.Dictionary["signaturehtml"] = "Hello World";
OWAConfig.Dictionary["autoaddsignature"] = "True";
OWAConfig.Update();

この問題を回避する方法はありますか?

4

1 に答える 1

3

正常に動作している同じことを行う古いコードがいくつかあります。以下のコードを貼り付けました。私のコードとあなたのコードにはいくつかの小さな違いがあります。それらが違いを生むかどうかはわかりませんが、試してみてください。これは、コメントで強調表示された違いを含む私のコードの抜粋です。

private void SetSettingValue(UserConfiguration owaConfig, string propName, object propValue)
{
    if (owaConfig.Dictionary.ContainsKey(propName))
    {
        owaConfig.Dictionary[propName] = propValue;
    }
    else
    {
        // Adds a key if it does not explicitly exist.
        // I am not sure if it makes a difference.
        owaConfig.Dictionary.Add(propName, propValue);
    }
}

public void AddSignature()
{
   // Extract
    UserConfiguration OWAConfig = UserConfiguration.Bind(
        service, 
        "OWA.UserOptions", 
        WellKnownFolderName.Root, // Binding to Root and not Root.ParentFolderId.
        UserConfigurationProperties.Dictionary // Binds to Dictionary and not to All.
        );

    SetSettingValue(OWAConfig, "autoaddsignature", true);
    SetSettingValue(OWAConfig, "signaturehtml", html);

    OWAConfig.Update();
}
于 2013-01-11T13:24:41.677 に答える