domingo, 15 de septiembre de 2013

CRM 4.0 - Emails

Como enviar un email


SendEmailRequest req = new SendEmailRequest();
req.EmailId = mail.activityid.Value;
req.TrackingToken = "";
req.IssueSend = true;
SendEmailResponse res = (SendEmailResponse)crmService.Execute(req);


Enviar un email utilizando una plantilla



//Declaracion del email
email mail = new email();
contact contacto = new contact();

//Asignacion del from y el to
//Propietario del contacto
activityparty from = new activityparty();
from.partyid = new Lookup();
from.partyid.Value = new Guid(encargado.systemuserid.Value.ToString());
from.partyid.type = EntityName.systemuser.ToString();
mail.from = new activityparty[] { from };
activityparty to = new activityparty();
to.partyid = new Lookup();

//Contacto creado
to.partyid.Value = new Guid(contacto.contactid.Value.ToString());
to.partyid.type = EntityName.contact.ToString();
mail.to = new activityparty[] { to };

//Busqueda de la plantilla adecuada
email cuerpoMail = new email();

//Hace falta esto para instanciar la plantilla que se busca
InstantiateTemplateRequest cuerpo = new InstantiateTemplateRequest();

//Template cuerpo : evento presencial
cuerpo.ObjectId = ((Key)usuarioDinamico.Properties["systemuserid"]).Value;
cuerpo.ObjectType = EntityName.systemuser.ToString();

QueryByAttribute queryCuerpo = new QueryByAttribute();
ColumnSet colsPlantilla = new ColumnSet();
colsPlantilla.AddColumn("body");
colsPlantilla.AddColumn("subject");
queryCuerpo.ColumnSet = colsPlantilla;
queryCuerpo.EntityName = EntityName.template.ToString();
queryCuerpo.Attributes = new string[] { "title" };
queryCuerpo.Values = new object[] { "Mi plantilla" };
BusinessEntityCollection retrievedTemplate = crmService.RetrieveMultiple(queryCuerpo);

if (retrievedTemplate.BusinessEntities.Length > 0) {
 cuerpo.TemplateId = ((template)retrievedTemplate.BusinessEntities[0]).templateid.Value;

 mail.description = ((email)cuerpoResponse.BusinessEntityCollection.BusinessEntities[0]).description;
 mail.subject = ((email)cuerpoResponse.BusinessEntityCollection.BusinessEntities[0]).subject;

 //Sustitucion de variables o aplicamos la traducción
 cuerpoMail.description = cuerpoMail.description.Replace(NOMBRE_CONTACTO, contacto.firstname);

 //Traductor traductor = new Traductor(crmService, metadataService);

 //Asignacion del texto al email que voy a enviar
 mail.description += cuerpoMail.description;
  //mail.description = traductor.Traduce(mail.description, ((Key)nifDinamico.Properties["new_nifid"]).Value, '[', ']');

 //creo el mail
 Guid mailguid = crmService.Create(mail);

 //envió el mail creado
 SendEmailRequest req = new SendEmailRequest();
 req.EmailId = mailguid;
 req.TrackingToken = "";
 req.IssueSend = true;
 SendEmailResponse res = (SendEmailResponse)crmService.Execute(req);
}

No hay comentarios:

Publicar un comentario