Publishing Text Events via Email
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:- '[email protected]')
- password: senders password
- to: receivers address (Ex:- '[email protected]')
- 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
- PublishEmailInTextFormat.siddhi - Started Successfully!.
Testing the Sample:¶
- Click on 'Event Simulator' (double arrows on left tab)
- Click 'Single Simulation' (this will be already selected)
- Select PublishEmailInTextFormat 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 similar to the following.
Subject: Test Siddhi-io-email-{{name}}
Content:
name:"chocolate cake",
hourlyTotal:10.1,
currentHour:
@App:name("PublishEmailInTextFormat")
@APP:description("Demonstrates how to use siddhi-io-email for publishing events to files.")
define stream SweetProductionStream (name string, amount double);
@sink(type='email', @map(type='text') ,
username ='<senders email user name>',
address ='<senders email address>',
password= '<senders email password>',
subject='Test Siddhi-io-email-{{name}}',
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