We were recently asked to verify and configure Outlook’s automatic downloading of pictures from the Internet:
Outlook 2011 / 2016 > Preferences > Reading > Security
The initial plan was to use a Custom Configuration Profile for the “com.microsoft.Outlook” domain (note the unique spelling of automatically):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AutomaitcallyDownloadExternalContent</key>
<integer>1</integer>
</dict>
</plist>
However, in limited testing, the Custom Configuration Profile yielded unpredictable results on OS X 10.11.3 (i.e., Outlook 2016 crashed on launch; Outlook 2011’s GUI always displayed as expected, but user interaction resulted in the .plist’s values being modified).
A couple of Extension Attributes and a Bash script later — which uses Parameter 4 for the desired setting — and we’re set.
Outlook 2011 Download Content Extension Attribute
#!/bin/sh
####################################################################################################
#
# ABOUT
#
# Extension Attribute to read: Outlook 2011 > Preferences > Reading > Security >
# Automatically download pictures from the Internet
#
####################################################################################################
#
# HISTORY
#
# Version 1.0, 27-Jan-2016, Dan K. Snelson
#
####################################################################################################
# Variables
loggedInUser=`/usr/bin/who | /usr/bin/grep console | /usr/bin/awk {'print $1'}`
testFile="/Users/${loggedInUser}/Library/Preferences/com.microsoft.Outlook.plist" # Outlook 2011
if [ -f $testFile ]; then
DownloadExternalContentStatus=`/usr/bin/defaults read ${testFile} AutomaitcallyDownloadExternalContent`
case "${DownloadExternalContentStatus}" in
0)
Status="In all messages"
;;
1)
Status="In messages from my contacts"
;;
*)
Status="Never"
;;
esac
echo "<result>${Status}</result>"
else
echo "<result>Not Found</result>"
fi
exit 0
Outlook 2016 Download Content Extension Attribute
#!/bin/sh
####################################################################################################
#
# ABOUT
#
# Extension Attribute to read: Outlook 2016 > Preferences > Reading > Security >
# Automatically download pictures from the Internet
#
####################################################################################################
#
# HISTORY
#
# Version 1.0, 27-Jan-2016, Dan K. Snelson
#
####################################################################################################
# Variables
loggedInUser=`/usr/bin/who | /usr/bin/grep console | /usr/bin/awk {'print $1'}`
testFile="/Users/${loggedInUser}/Library/Containers/com.microsoft.Outlook/Data/Library/Preferences/com.microsoft.Outlook.plist" # Outlook 2016
if [ -f $testFile ]; then
DownloadExternalContentStatus=`/usr/bin/defaults read ${testFile} AutomaitcallyDownloadExternalContent`
case "${DownloadExternalContentStatus}" in
0)
Status="In all messages"
;;
1)
Status="In messages from my contacts"
;;
*)
Status="Never"
;;
esac
echo "<result>${Status}</result>"
else
echo "<result>Not Found</result>"
fi
exit 0
Outlook_Auto_Download_Settings.sh
When editing Computer Management > Scripts, manually set Options > Parameter 4 to: Setting (All | Contacts | Off)

After adding the script to a Policy, specify “All”, “Contacts”, or “Off” for Parameter 4. (Default is “Off” when Parameter 4 is left blank.)
#!/bin/sh
####################################################################################################
#
# ABOUT
#
# Configure defaults for Microsoft Outlook:
# * Specify automatic downloading of pictures from the Internet
#
####################################################################################################
#
# HISTORY
#
# Version 1.0, 28-Jan-2016, Dan K. Snelson
#
####################################################################################################
# Import logging functions
source /path/to/client-side/logging/script/ScriptLog.sh
####################################################################################################
ScriptLog "#### Configure Microsoft Outlook's automatic downloading of pictures from the Internet ####"
# Variables
loggedInUser=`/usr/bin/who | /usr/bin/grep console | /usr/bin/awk {'print $1'}`
downloadSetting="$4" # All | Contacts | Off (setting for automatic downloading of pictures from the Internet)
Outlook2011(){
testFile="/Users/${loggedInUser}/Library/Preferences/com.microsoft.Outlook.plist" # Outlook 2011
if [ -f $testFile ]; then
# Capture the current state
DownloadExternalContentState
ScriptLog "* Microsoft Outlook 2011 Automatic Download Current Setting: ${Status}"
case "${downloadSetting}" in
"All")
sudo -u ${loggedInUser} /usr/bin/defaults write ${testFile} AutomaitcallyDownloadExternalContent 0
;;
"Contacts")
sudo -u ${loggedInUser} /usr/bin/defaults write ${testFile} AutomaitcallyDownloadExternalContent 1
;;
*)
sudo -u ${loggedInUser} /usr/bin/defaults delete ${testFile} AutomaitcallyDownloadExternalContent
;;
esac
# Capture the updated state
DownloadExternalContentState
ScriptLog "* Microsoft Outlook 2011 Automatic Download Updated Setting: ${Status}"
else
ScriptLog "Did not find a Microsoft Outlook 2011 preference file for ${loggedInUser}"
fi
}
Outlook2016(){
testFile="/Users/${loggedInUser}/Library/Containers/com.microsoft.Outlook/Data/Library/Preferences/com.microsoft.Outlook.plist" # Outlook 2016
if [ -f ${testFile} ]; then
# Capture the current state
DownloadExternalContentState
ScriptLog "* Microsoft Outlook 2016 Automatic Download Current Setting: ${Status}"
case "${downloadSetting}" in
"All")
if [ "${Status}" == "Never" ]; then
sudo -u ${loggedInUser} /usr/libexec/PlistBuddy -c "Add :AutomaitcallyDownloadExternalContent integer 0" ${testFile}
else
sudo -u ${loggedInUser} /usr/libexec/PlistBuddy -c "Set :AutomaitcallyDownloadExternalContent 0" ${testFile}
fi
;;
"Contacts")
if [ "${Status}" == "Never" ]; then
sudo -u ${loggedInUser} /usr/libexec/PlistBuddy -c "Add :AutomaitcallyDownloadExternalContent integer 1" ${testFile}
else
sudo -u ${loggedInUser} /usr/libexec/PlistBuddy -c "Set :AutomaitcallyDownloadExternalContent 1" ${testFile}
fi
;;
*)
sudo -u ${loggedInUser} /usr/libexec/PlistBuddy -c "Delete :AutomaitcallyDownloadExternalContent" ${testFile}
;;
esac
# Reload preferences
/usr/bin/killall -u ${loggedInUser} cfprefsd
# Capture the updated state
DownloadExternalContentState
ScriptLog "* Microsoft Outlook 2016 Automatic Download Updated Setting: ${Status}"
else
ScriptLog "Did not find a Microsoft Outlook 2016 preference file for ${loggedInUser}"
fi
}
DownloadExternalContentState() { # Capture the current state
DownloadExternalContentStatus=`/usr/bin/defaults read ${testFile} AutomaitcallyDownloadExternalContent`
case "${DownloadExternalContentStatus}" in
0)
Status="In all messages"
;;
1)
Status="In messages from my contacts"
;;
*)
Status="Never"
;;
esac
}
Outlook2011
/bin/sleep 5
Outlook2016
/bin/echo "${Status}"
exit 0