Expand my Community achievements bar.

SOLVED

Sending emails through API

Avatar

Level 4

Hi Team, 

 

I am seding emails through javascript API like the below : 

 

Ramaswami_0-1605188912188.png

 

in my javascript code : 

 

var emailCondition = "@email = 'abc@gmail.com'";

var deliveryId = nms.delivery.SubmitNotification ("prdDM30608",
<delivery>
<targets >
<deliveryTarget >
<targetPart type='query' exclusion='false' ignoreDeleteStatus='false'>
<where>
<condition expr={emailCondition} />
</where>
</targetPart>
</deliveryTarget>
</targets>
</delivery>);
logInfo("deliveryid : "+deliveryId)

 

Currently it is taking the email address statically. I want the email address to be taken dynamically from the query activity. How can i do that ?

 

solution which I am following ( but i don't think so this is a nice solution as when i follow this solution the exclude duplicate option in the email settings not working)

 

Solution which i am thinking is a wrong approach : 

// vars.tableName = table which is generated by query activity and it has email column

var cnx = application.getConnection();

var details = cnx.query("select * from "+vars.tableName);
for each(var row in details)
{
var emailCondition = "@email = '"+row[1]+"'";
var deliveryId = nms.delivery.SubmitNotification ("prdDM30608",
<delivery>
<targets >
<deliveryTarget >
<targetPart type='query' exclusion='false' ignoreDeleteStatus='false'>
<where>
<condition expr={emailCondition} />
</where>
</targetPart>
</deliveryTarget>
</targets>
</delivery>);
logInfo("deliveryid : "+deliveryId)
}
cnx.dispose();

 

Is there any good approach to directly pipe the email from query activity this way i can exclude duplicate addresses for emails. 

 

Question 2: 

Also if in email template if we have a variable piping like "<%=recipient.firstname>" how can i pass this varable from api call ?? any solution for this??

 

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

You should use message center for this cases if you want your recipient/user to receive an email after your api call. 

from the marketing instance, i will recommend to send api call to recipient table and trigger a workflow every 10-15 min.

 

Thanks

David



David Kangni

View solution in original post

2 Replies

Avatar

Correct answer by
Community Advisor

You should use message center for this cases if you want your recipient/user to receive an email after your api call. 

from the marketing instance, i will recommend to send api call to recipient table and trigger a workflow every 10-15 min.

 

Thanks

David



David Kangni

Avatar

Level 4

Hi @DavidKangni,

 

I am new to this. Can you give me an example ?

 

Currently i am able to send the deliveries through API but there are some variables of recipient table which i need to pass to delivery template like ( recipient.firstname) how can i do so ?

 

along with email i need to pass two more variables of recipient table.

 

Currently this is my code : 

 

// vars.tableName = table which is generated by query activity and it has email column

var cnx = application.getConnection();

var details = cnx.query("select * from "+vars.tableName);
for each(var row in details)
{
var emailCondition = "@email = '"+row[1]+"'";
var deliveryId = nms.delivery.SubmitNotification ("prdDM30608",
<delivery>
<targets >
<deliveryTarget >
<targetPart type='query' exclusion='false' ignoreDeleteStatus='false'>
<where>
<condition expr={emailCondition} />
</where>
</targetPart>
</deliveryTarget>
</targets>
</delivery>);
logInfo("deliveryid : "+deliveryId)
}
cnx.dispose();