Share via


Office 365: Using PowerShell to set email signature policy based on HTML file

This article explains how to prepare an HTML email signature template file containing dynamic placeholders for users' Azure AD data. Furthermore, it explains how to use this file to remotely set up a department-wide email signature policy in Office 365 via Windows PowerShell using Exchange Online transport rules.

Preparing the HTML email signature file

Exchange Online transport rule disclaimers accept the following types of content:

  • Text
  • HTML code and inline CSS
  • Images hosted online (inserted using the HTML <img> tag)
  • Dynamic placeholders for users' Azure AD data*

* The placeholders must be provided in this fashion: %%Name of AD attribute%%. For more details, including a list of available attributes, see this article: http://www.mail-signatures.com/articles/active-directory-data-in-email-signatures/

NOTE: The file should be prepared in Plain Text format, e.g. TXT or HTM.

Example of Exchange Online transport rule disclaimer code:

<TABLE style="WIDTH: 460px">
 <TBODY>
 <tr >
 <TD style="FONT-SIZE: 10pt; HEIGHT: 25px; FONT-FAMILY: Arial; WIDTH: 222px"
 align=left>
 <P><STRONG>%%FirstName%% %%LastName%%<BR></STRONG>%%Company%% | %%Title%%<BR>p: %%PhoneNumber%%<BR>m: %%MobileNumber%%</p></td>
 <TD style="FONT-SIZE: 10pt; HEIGHT: 25px; FONT-FAMILY: Arial; WIDTH: 232px"
 align=right vAlign=top><A 
 href="http://www.youtube.com"><IMG
 style="HEIGHT: 25px; WIDTH: 25px" border=0
 src="http://www.mail-signatures.com/articles/wp-content/uploads/2014/08/youtube.png"></A> <A
 href="http://www.facebook.com"><IMG
 style="HEIGHT: 25px; WIDTH: 25px" border=0
 src="http://www.mail-signatures.com/articles/wp-content/uploads/2014/08/facebook.png"></A> <A
  
 href="https://plus.google.com"><IMG
 style="HEIGHT: 25px; WIDTH: 25px" border=0
 src="http://www.mail-signatures.com/articles/wp-content/uploads/2014/08/googleplus-2.png"></A> <A
  
 href="https://twitter.com"><IMG 
 style="HEIGHT: 25px; WIDTH: 25px" border=0
 src="http://www.mail-signatures.com/articles/wp-content/uploads/2014/08/twitter.png"></A> </td></tr>
 <TR>
 <TD style="FONT-SIZE: 10pt; HEIGHT: 25px; FONT-FAMILY: Arial" align="middle"
 colSpan=2><p> </p><A href="http://technet.microsoft.com/default.aspx"><IMG border=0 src="http://www.mail-signatures.com/articles/wp-content/uploads/2016/05/example-banner-with-link-to-technet.png"></A></TD></TR>
 </TBODY></TABLE>

Importing the email signature code into a PowerShell session

Learn how to start a remote PowerShell session to Office 365: http://www.codetwo.com/admins-blog/start-remote-powershell-session-connect-exchange-office-365/

Once the text file containing the email signature code is saved to your local drive, you can import its contents into PowerShell. To do this run the below script:

$signature = Get-Content <HTML email signature file path>

Learn more about Get-Content cmdlet: https://technet.microsoft.com/en-us/library/hh849787.aspx

Creating the email signature transport rule

This is done using the New-TransportRule cmdlet with the -ApplyHtmlDisclaimerText parameter.

To set up a general email signature policy that would add the HTML code you've just imported to all outgoing and internal emails, you just have to run:

New-TransportRule -Name <name of transport rule> -ApplyHtmlDisclaimerText "$signature"

But you can also use a wide range of conditions and exceptions* to limit scopes of senders and/or recipients, trigger or block the signature if key phrases are present in email subject or body, base the rule on attachment properties, message type, etc.

To view the full list available conditions, go to: https://technet.microsoft.com/en-us/library/dd638183%28v=exchg.150%29.aspx

* Note that exceptions are created by prefixing a Shell name of a condition with "ExceptIf", e.g. ExceptIfFrom.

For instance, the below script utilizes the uploaded HTML code to create an email signature policy that will be applied to outgoing emails sent by the Marketing department:

New-TransportRule -Name "External signature for Marketing Department" -SentToScope 'NotInOrganization' -SenderADAttributeContainsWords "Department:Marketing" -ApplyHtmlDisclaimerText "$signature"