2013-04-04 79 views
5

是否可以通過編程設置Outlook 2013默認簽名設置?我們可以生成用戶的簽名確定,但想也設置簽名默認情況下,用戶的電子郵件出現:以編程方式設置Outlook 2013簽名默認值?

Outlook 2013 Email Signature Defaults

設置本身似乎是在註冊表中捲起,走在Outlook配置文件:

HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6677\00000002

註冊值:

  • New Signature
  • Reply-Forward Signature

...(其具有二進制數據,推測編碼的HTML文件名/參考)。

不知道我是否可以使用Outlook對象模型來訪問和設置設置?並且這是否可以用ClickOnce應用程序?

+1

是的:http://stackoverflow.com/a/23151372/737393 – CrazyTim 2015-07-20 00:26:48

回答

0

我還沒有清理代碼,但這對我在Outlook 2013中設置簽名有效。在Python中(是的,我知道它的醜陋而不是PEP8)。

import _winreg 
def set_default(): 

    try: 
     #this makes it so users can't change it. 
     outlook_2013_key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, r"Software\Microsoft\Office\15.0\Common\MailSettings", 0, _winreg.KEY_ALL_ACCESS) 
     _winreg.SetValueEx(outlook_2013_key, "NewSignature", 0, _winreg.REG_SZ, "default") 
     _winreg.SetValueEx(outlook_2013_key, "ReplySignature", 0, _winreg.REG_SZ, "default") 

     # sets the sigs in outlook profile 
     outlook_2013_base_key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, r"Software\Microsoft\Office\15.0\Outlook\Profiles", 0, _winreg.KEY_ALL_ACCESS) 
     default_profile_2013_tup = _winreg.QueryValueEx(outlook_2013_base_key,'DefaultProfile') 
     default_profile_2013 = default_profile_2013_tup[0] 
     print default_profile_2013 
     outlook_2013_profile_key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, 
                "Software\\Microsoft\\Office\\15.0\\Outlook\\Profiles\\" + default_profile_2013 + "\\9375CFF0413111d3B88A00104B2A6676", 0, _winreg.KEY_ALL_ACCESS) 
     for i in range(0, 10): 
      try: 
       outlook_2013_sub_key_name = _winreg.EnumKey(outlook_2013_profile_key,i) 
       print outlook_2013_sub_key_name, "sub_key_name" 
       outlook_2013_sub_key = _winreg.OpenKey(outlook_2013_profile_key, outlook_2013_sub_key_name, 0, _winreg.KEY_ALL_ACCESS) 
       _winreg.SetValueEx(outlook_2013_sub_key, "New Signature", 0, _winreg.REG_SZ, "default") 
       _winreg.SetValueEx(outlook_2013_sub_key, "Reply-Forward Signature", 0, _winreg.REG_SZ, "default") 
      except: 
       pass 

    except: 
     print('no 2013 found')