Publishing Emails in XML Format¶
Purpose:¶
This application demonstrates how to use siddhi-io-email for publishing events to files.
Prerequisites:¶
- Replace the Sink configuration values for following options.
- username: senders username (Ex:- 'example123')
- address: senders address (Ex:- 'example123@wso2.com')
- password: senders password
- to: receivers address (Ex:- 'example987@wso2.com')
- subject: subject of the email
- You need to enable access to "less secure apps" in the sender's Gmail account via "https://myaccount.google.com/lesssecureapps" link
- Save this sample
Executing the Sample:¶
- Start the Siddhi application by clicking on 'Run'
- If the Siddhi application starts successfully, the following messages would be shown on the console
- PublishEmailInXmlFormat.siddhi - Started Successfully!.
Testing the Sample:¶
- Click on 'Event Simulator' (double arrows on left tab)
- Click 'Single Simulation' (this will be already selected)
- Select PublishEmailInXmlFormat as 'Siddhi App Name'
- Select SweetProductionStream as 'StreamName'
- Provide attribute values
- name: chocolate cake
- amount: 10.10
- Click on the start button (Arrow symbol) next to the newly created simulator
Viewing the Results:¶
Check the receiver Gmail inbox (The Gmail referred to in 'to' Sink configuration) to see the alert as follows.
Subject: <subject of the email>
Content: <events><event><name>chocolate cake</name><hourlyTotal>10.1</hourlyTotal><currentHour>0.0</currentHour></event></events>
Note:¶
current hour depends on the system's timestamp
@App:name("PublishEmailInXmlFormat")
define stream SweetProductionStream (name string, amount double);
@sink(type='email', @map(type='xml') ,
username ='<senders email user name>',
address ='<senders email address>',
password= '<senders email password>',
subject='Test Siddhi-io-email-',
to='<receivers email address>',
port = '465',
host = 'smtp.gmail.com',
ssl.enable = 'true',
auth = 'true')
define stream LowProductionAlertStream(name string, hourlyTotal double, currentHour double);
@sink(type='log')
define stream EmailLogStream(name string, hourlyTotal double, currentHour double);
from SweetProductionStream#window.time(1 min)
select name, sum(amount) as hourlyTotal,
convert(time:extract('HOUR', time:currentTimestamp(), 'yyyy-MM-dd hh:mm:ss'), 'double') as currentHour
insert into LowProductionAlertStream;
from LowProductionAlertStream
insert into EmailLogStream;
Top