Alerting

How to add HTML markups to alert email?

Sasquatchatmars
Communicator

Hi all,

I have an alert which is sending an email to all users but i need to add HTML tags to the content. For example, I need to add images and make some text bold, colored and stuff like that.
When I add the tags and send the mail it doesn't work, does someone know how I could use it? I'm obligated to add it in the mail.

Thank you,

Sasquatchatmars

Labels (1)
1 Solution

Sasquatchatmars
Communicator

For anyone who needs an answer to this, I made a new command using the suggested changes, here , in the python script "sendemail.py". 

To do this go to: 

copy the script: splunk/etc/apps/search/bin/sendemail.py 

Go to the part where you can find:

def htmlMessageTemplate():
    return template.Template('<div style="margin: 0 20px;">${msg|h}</div>')

Change that to to the following:

def htmlMessageTemplate():
    return template.Template('<div style="margin: 0 20px;">${msg}</div>')

This way you will be able to send mails with html tags in it. If you decide to change the sendemail.py file with the above to use the integrated sendemail command, be aware that the changes will be reverted when splunk is updated. 

I hope this will help someone. 

Sasquatchatmars

View solution in original post

wmw
Explorer

I appreciate this semi-recent thread on this subject. I'm curious what someone is intended to do in Splunk Cloud though. Like... why does the email alert configuration have 2 buttons at the bottom. 1 says "HTML & Plain Text", the other just says "Plain Text", and regardless of what occurs you just get plain text. Uh, wut?

Sasquatchatmars
Communicator

For anyone who needs an answer to this, I made a new command using the suggested changes, here , in the python script "sendemail.py". 

To do this go to: 

copy the script: splunk/etc/apps/search/bin/sendemail.py 

Go to the part where you can find:

def htmlMessageTemplate():
    return template.Template('<div style="margin: 0 20px;">${msg|h}</div>')

Change that to to the following:

def htmlMessageTemplate():
    return template.Template('<div style="margin: 0 20px;">${msg}</div>')

This way you will be able to send mails with html tags in it. If you decide to change the sendemail.py file with the above to use the integrated sendemail command, be aware that the changes will be reverted when splunk is updated. 

I hope this will help someone. 

Sasquatchatmars

dstoev
Path Finder

Thank you for this answer, it really get the job done. However according to some research this might not be good for safety reasons, because a XSS (Cross Site Scripting) attacks, especially if the content of msg can be influenced by user input. Also like mentioned this change will be lost after an upgrade.

For now I've decided to use Sendresults app, which I'm not 100% sure if it can avoid the XSS, but at least it won't break (hopefully) during an upgrade and also it should provide more features than the built-in one.

0 Karma
Career Survey
First 500 qualified respondents will receive a $20 gift card! Tell us about your professional Splunk journey.
Get Updates on the Splunk Community!

Thanks for the Memories! Splunk University, .conf25, and our Community

Thank you to everyone in the Splunk Community who joined us for .conf25, which kicked off with our iconic ...

Data Persistence in the OpenTelemetry Collector

This blog post is part of an ongoing series on OpenTelemetry. What happens if the OpenTelemetry collector ...

Introducing Splunk 10.0: Smarter, Faster, and More Powerful Than Ever

Now On Demand Whether you're managing complex deployments or looking to future-proof your data ...