Search code examples
outlookvstooffice-interop

Change Outlook Personal Stationery via c#


I have just started learning how to program add-ins for Outlook using Visual Studio. I am having a hard time finding resources to read up on VSTO. How can I cannot modify the default fonts for "New mail messages" and "Replying or forwarding messages" under Personal Stationery in Outlook?


Revised my post to include the solution:

I am using code from this link (https://pcloadletter.co.uk/2010/05/19/outlook-default-font-and-signature/) and converted to c#. For those that are trying to do the same, here is how I did it.

private void SetFont()
{
    RegistryKey key = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Office\16.0\Common\MailSettings", true);

    // set the font in Outlook and then export it from the registry. Use that value for our code.
    string ComposeFontSimple = @"3c,00,00,00,1f,00,00,f8,00,00,00,00,c8,00,00,00,00,00,
                        00,00,ff,ff,00,dd,00,22,41,72,69,61,6c,00,00,00,00,00,00,00,00,00,00,00,00,
                        00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00";
    byte[] arrComposeFontSimpleBin = ArrayHexToDec(ComposeFontSimple.Split(','));
    key.SetValue("ComposeFontSimple", arrComposeFontSimpleBin, RegistryValueKind.Binary);
}

public static byte[] ArrayHexToDec(string[] arrHex)
{
    byte[] arrDec = new byte[arrHex.GetUpperBound(0)];

    for (int i = 0; i < arrHex.GetUpperBound(0); i++)
    {
        if (arrHex[i] == "00")
        {
            arrDec[i] = 0;
        }
        else
        {
            arrDec[i] = byte.Parse(arrHex[i], System.Globalization.NumberStyles.HexNumber);
        }
    
    }           
    
    return arrDec;
    
}

Solution

  • The settings are stored at HKCU\Software\Microsoft\Office\%s.0\Common\MailSettings.

    The value you want is ReplyFontSimple - font size starts at offset 12, and name start at offset 0x1A (0x0 terminated string).