前面搞了邮箱的配置,那么就可以借助Dynamics CRM工作流来给用户发邮件了,比如签核提醒,什么的,对于这些收件人简单的固定且存在CRM中 比如用户或者联系人的,通过配置就可以实现,但是当邮件通知的人不在CRM中或者收件人cc复杂时 无法通过配置来实现,这个时候就需要通过自定义一个工作流通过后台的代码实现。
CRM中存放邮件的实体是email,因为想发邮件只需要后台创建email,然后调用发送请求就可以。
/// <summary>
/// 发邮件
/// </summary>
/// <param name="organizationService">管理员组织服务</param>
/// <param name="subject">主题</param>
/// <param name="description">正文描述</param>
/// <param name="from">发件人列表</param>
/// <param name="tolist">收件人列表</param>
/// <param name="cclist">抄送人列表</param>
private void sendeamil(IOrganizationService organizationService, string subject, string description, List<Entity> fromlist, List<Entity> tolist, List<Entity> cclist)
{
var email = new Entity("email");
email["from"] = fromlist.ToArray();
email["to"] = tolist.ToArray();
email["cc"] = cclist.ToArray();
email["subject"] = subject;
email["description"] = description;
var emailid = organizationService.Create(email);
SendEmailRequest sendEmailRequest = new SendEmailRequest
{
EmailId = emailid,
TrackingToken = string.Empty,
IssueSend = true
};
organizationService.Execute(sendEmailRequest);
}
SendEmailRequest CRM提供的发送邮件的发送请求。
emailid 这个就是赋值需要发送的邮件id;issuesend标记是否需要发送邮件 true 则为发送 false 只标记已发送但不发送。
下面来看看 传入email中的 发件人列表 抄送人列表 都是什么。
//发件人
var fromlist = new List<Entity>();
var fromentity = new Entity("activityparty");
fromentity["partyid"] = from;
fromentity["partyobjecttypecode"] = 8;
fromlist.Add(fromentity);
//收件人
var tolist = new List<Entity>();
var toentity = new Entity("");
toentity["partyid"] = acc.GetAttributeValue<EntityReference>("ownerid");
toentity["partyobjecttypecode"] = 8;
tolist.Add(toentity);
var toentity = new Entity("activityparty");
toentity["addressused"] = emailaddress;
toentity["participationtypemask"] = new OptionSetValue(2);
tolist.Add(toentity);
participationtypemask 根据上表来确认类型
完了 中秋快乐 有空再写!!! 中秋快乐!!!!
微软官方文档参考:
发邮件代码
活动实体
ActivityParty 实体