1. Create an Email template. so that we can modify the email content at anytime.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj92EibHmqBt-wqDBMql0C60xdqQhYkByBB0lYpeNh8CV4sZWn6yjmlBuAw-3e5rHdk5uJ122KH4QdQHnVDolc8HUmADoYrYuM3UlBu3C1S19zfbTFoaW8d4ED67ZHcIENXEgfeeLVJVoE/s320/email+template.jpg)
2. Here is the code to retrieve the email template and send email using CRM SDK.I have created a queue based on our requirment.so all email should go using this queue Email.
public static void sendEmail(ref CrmService service, Guid entityId, Guid customerid, string customertype, string createdate)
{
try
{
Guid mailID = Guid.Empty;
SendEmailRequest req = new SendEmailRequest();
InstantiateTemplateRequest instTemplate = new InstantiateTemplateRequest();
instTemplate.TemplateId = new Guid("XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"); //guid of email template
instTemplate.ObjectId = entityId;
instTemplate.ObjectType = EntityName.incident.ToString();
InstantiateTemplateResponse instTemplateResponse = (InstantiateTemplateResponse)service.Execute(instTemplate);
email emailresponse = (email)instTemplateResponse.BusinessEntityCollection.BusinessEntities[0];
Guid queueId = GetQueueGuid(ref service, "Customer Service");
ArrayList alProperty = new ArrayList();
DynamicEntity newEmail = new DynamicEntity();
newEmail.Name = "email";
DynamicEntityArrayProperty deapFrom = new DynamicEntityArrayProperty();
deapFrom.Value = ConvertIntoSingleActivityParty(queueId, EntityName.queue.ToString());
deapFrom.Name = "from";
newEmail.Properties.Add(deapFrom);
DynamicEntityArrayProperty deapTo = new DynamicEntityArrayProperty();
deapTo.Name = "to";
deapTo.Value = ConvertIntoSingleActivityParty(customerid, customertype);
newEmail.Properties.Add(deapTo);
StringProperty strPropDescription = new StringProperty();
strPropDescription.Value = emailresponse.subject;
strPropDescription.Name = "subject";
alProperty.Add(strPropDescription);
StringProperty strPropMessageBody = new StringProperty();
strPropMessageBody.Value = emailresponse.description;
strPropMessageBody.Name = "description";
alProperty.Add(strPropMessageBody);
CrmBooleanProperty ack = new CrmBooleanProperty();
ack.Value = new CrmBoolean(true);
ack.Name = "mda_autoresponse";
alProperty.Add(ack);
Lookup caseid = new Lookup();
caseid.Value = entityId;
caseid.type = EntityName.incident.ToString();
LookupProperty lookupPropRegardingObject = new LookupProperty();
lookupPropRegardingObject.Value = caseid;
lookupPropRegardingObject.Name = "regardingobjectid";
alProperty.Add(lookupPropRegardingObject);
Property[] prop = new Property[alProperty.Count];
alProperty.CopyTo(prop);
newEmail.Properties.AddRange(prop);
TargetCreateDynamic myTarget = new TargetCreateDynamic();
myTarget.Entity = newEmail;
CreateRequest create = new CreateRequest();
create.Target = myTarget;
CreateResponse myResponse = (CreateResponse)service.Execute(create);
SendEmailRequest emailreq = new SendEmailRequest();
emailreq.EmailId = myResponse.id;
emailreq.TrackingToken = "";
emailreq.IssueSend = true;
// Send the e-mail message.
SendEmailResponse res = (SendEmailResponse)service.Execute(emailreq);
}
private static DynamicEntity[] ConvertIntoSingleActivityParty(Guid senderId, string entityname)
{
DynamicEntity[] part = new DynamicEntity[1];
try
{
part[0] = new DynamicEntity();
part[0].Name = "activityparty";
LookupProperty lProp = new LookupProperty();
lProp.Name = "partyid";
Lookup l = new Lookup();
l.type = entityname;
l.Value = senderId;
lProp.Value = l;
Property[] prop = new Property[1];
prop[0] = lProp;
part[0].Properties.AddRange(prop);
return part;
}
catch (System.Web.Services.Protocols.SoapException soapex)
{
throw soapex;
}
catch (Exception ex)
{ throw ex; }
}
Hope this will help you guys to send email from email Template.
Happy Coding.!!!!!!!1
No comments:
Post a Comment