Trigger email in DataPower
Hello Tech Enthusiasts 👋,
In this article, we’ll talk about how we can trigger email in DataPower. To trigger, we can either use 1) log-target, 2) url-open xslt. I’ll guide how we can use both the methods. Before beginning, regardless of the method chosen, we will need the following details:
- SMTP Server host/IP,
- SMTP Server port,
- SMTP Server authentication credentials if used,
- SMTP Server TLS enabled or disabled,
- Recipient email address.
- From email address. This is important as many SMTP server would reject is incoming email domain isn’t recognized.
To enable the test, I’m using free public smtp server : mailtrap
Through log-target
The log-target method is fairly straight forward.
1). For test purpose, I’m creating a new log-category ‘testsmtp’. 2). Next create log-target object and configure the details as below 👇:
3). Add log-catagory to event Subscription tab
smtp-log-target-event-subscription-tab
If SMTP server needs TLS and Username/Password authentication, we would need to update default user-agent.
4). Create a new password-alias object (hardcoding password is deprecated) and create new Basic Auth Policy in default user-agent as below 👇:
5). Add SMTP Client policy in default user-agent tab and ensure to check STARTTLS and Authentication options:
user-agent-smtp-client-auth-tab
To test, go to troubleshooting and ‘Generate Log Event’ as below 👇:
generate-log-event-troubleshooting
Message Received in email as :
In XSLT, we can trigger log category using dp:type=”smtptest” in
url-open xslt
In this solution, we’re calling SMTP server within a service (here I’m using mpgw, but applicable for any of the service). To call, we’ll use the most common DataPower extension element : dp:url-open. The smtp endpoint url needs to be dpsmtp//
. Ensure don’t use smtp as that’s now deprecated at the time of this article.
For demo purpose, I’m using loopback service to demonstrate url-open.
1). - Create a mpgw and add http/https front-side handler, processing policy and single rule with loopback variable (var://service/mpgw/skip-backside = 1
)
2). Upload following xslt in the file-management and refer it using processing action (Transform using XSLT)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dp="http://www.datapower.com/extensions" xmlns:dpconfig="http://www.datapower.com/param/config" xmlns:date="http://exslt.org/dates-and-times" extension-element-prefixes="dp" exclude-result-prefixes="dp dpconfig date" version="1.0">
<xsl:template match="/*">
<xsl:variable name="log-message">
<MessageBody>
<Date>
<xsl:value-of select="date:date()" />
</Date>
<Time>
<xsl:value-of select="date:time()" />
</Time>
<Domain>
<xsl:value-of select="dp:variable('var://service/domain-name')" />
</Domain>
<TransactionID>
<xsl:value-of select="dp:variable('var://service/transaction-id')" />
</TransactionID>
</MessageBody>
</xsl:variable>
<dp:url-open target="dpsmtp://live.smtp.mailtrap.io:587/?To=xxxx@abc.com&From=demoemail@demomailtrap.com&Subject=Demo-Email" response="responsecode">This is sample message.
<xsl:copy-of select="$log-message"/></dp:url-open>
</xsl:template>
</xsl:stylesheet>
Trigger the service and we can see this from DataPower probe as well
dp-probe-screenshot-troubleshooting
— Keep Learning 😊
— Aditya Singh
If this article helped you in someway and want to support me, you can …
Comments powered by Disqus.