I'm building a subscription for pages at a website. So a to-be subscriber post via a form and get added to a marketing list in Dynamics 365 Online.
From a scheduled job at the website i then make a request of the contacts in a marketing list.
Then i need to send them an email that a new page have been created with this properties and a link to that page.
So i would like to make that responsibility Dynamics 365 Online.
So im using the Web API and the action: SendEmailFromTemplate Not sure if i can use this action or if i need to create a custom action.
I would need to pass data such as URL of the page, title and Text. Or just one string - the body of the e-mail message that contains all of this.
So i have created an email template at the CRM and it semse like the code finds it!
This is the action i think i'm after: https://msdn.microsoft.com/en-us/library/mt607523.aspx
If i check the documentation at the SOAP Service there is actually examples: https://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.sendemailfromtemplaterequest.aspx?cs-save-lang=1&
But i'm going with the Web API.
So i tried this:
dynamic regarding = new ExpandoObject();
var oppIndexer = regarding as IDictionary<string, Object>;
oppIndexer["contactid"] = contact.ContactId; //contact that will recive the
email.
oppIndexer["@odata.type"] = "Microsoft.Dynamics.CRM.contact";
dynamic target = new ExpandoObject();
var targetIndexer = target as IDictionary<string, Object>;
targetIndexer["torecipients"] = "[email protected]";
targetIndexer["sender"] = "[email protected]";
targetIndexer["inreplyto"] = "[email protected]";
targetIndexer["subject"] = "This is the subject";
targetIndexer["description"] = "This should be the body of the email";
targetIndexer["directioncode"] = true; //outgoing
targetIndexer["@odata.type"] = "Microsoft.Dynamics.CRM.email";
dynamic sendEmailFromTemplate = new ExpandoObject();
sendEmailFromTemplate.TemplateId = Guid.Parse("my-email-template-guid-inserted-here");
sendEmailFromTemplate.Regarding = regarding;
sendEmailFromTemplate.Target = target;
api.ExecuteAction("SendEmailFromTemplate", sendEmailFromTemplate);
But i get exception: "The e-mail must have at least one recipient before it can be sent" when i post it.
What might be the problem?
I think the documentation at: https://msdn.microsoft.com/en-us/library/mt607523.aspx
Just declare that the type for target and regarding should be of type "crmbaseentity". A base class...
Anyone know what might cause this?
This is the Email Entity: https://msdn.microsoft.com/en-us/library/mt608007.aspx
For the field "torecipients" one could read: "Shows the email addresses corresponding to the recipients". So i'm not sure this is the field i should use. If the text would be "The recipients with "," separator that will recive the message" i would be more certain that i would have to use this field.
Update: Okey, so this is what you posted:
{
"email_activity_parties": [
{ "[email protected]": "/systemusers(852a441c-b544-e611-80e3-c4346bc5e750)", "participationtypemask": 1 },
{ "[email protected]": "/systemusers(852a441c-b544-e611-80e3-c4346bc5e750)", "participationtypemask": 2 }
],
"description": "description lorem ipsum",
"subject": "rubrik",
"[email protected]": "/opportunities(e9e6eb64-9c4c-e611-80e4-c4346bc58294)"
}
If i would to change this so it suits my need. I dont think im going to be using opportunities. Or must i? There are three parameters for SendEmailFromTemplate Action: https://msdn.microsoft.com/en-us/library/mt607523.aspx TemplateId, Regarding and Target. I changed this code a bit below (untested)
{
"TemplateId": "id-for-email-template",
"Regarding": [ { "[email protected]": "/contacts(contact-guid-X)" } ],
"Target": {
"email_activity_parties": [
{ "[email protected]": "/systemusers(systemuser-guid-Y)", "participationtypemask": 1 }, //1 is "sender"
{ "[email protected]": "/contacts(contact-guid-X)", "participationtypemask": 2 } // 2 is "to"
],
"description": "description lorem ipsum",
"subject": "rubrik",
"[email protected]": "/contacts(contact-guid-X)"
}
}
I will try out something like this..