using System;

    using Microsoft.Xrm.Sdk;

    using Microsoft.Crm.Sdk.Messages;

    using Microsoft.Xrm.Sdk.Query;

/// <summary>

    /// 电子邮件

    /// </summary>

    public class EmailHelper

    {

        public static readonly string entityName = "email";

        public Guid emailId = Guid.Empty;

        public IOrganizationService service;

/// <summary>

        /// 创建电子邮件

        /// </summary>

        public void Create()

        {

            Entity en = new Entity();

            en["subject"] = "电子邮件測试";

            en["activityId"] = Guid.NewGuid();

            emailId = service.Create(en);

        }

/// <summary>

        /// 异步发送电子邮件

        /// </summary>

        /// <param name="query">查询的条件</param>

        public void BackgroundSendEmail(QueryBase query)

        {

            BackgroundSendEmailRequest request = new BackgroundSendEmailRequest();

            request.Query = query;

            BackgroundSendEmailResponse response = (BackgroundSendEmailResponse)service.Execute(request);

            EntityCollection entityCollection = response.EntityCollection;

            bool[] hasAttachments = response.HasAttachments;

        }

/// <summary>

        /// 检查是否应该将传入电子邮件提升到 Microsoft Dynamics CRM 系统

        /// </summary>

        /// <param name="messageId">消息id</param>

        /// <param name="subject">主题</param>

        public void CheckPromoteEmail(string messageId,string subject)

        {

            CheckPromoteEmailRequest request = new CheckPromoteEmailRequest();

            request.MessageId = messageId;

            request.Subject = subject;

            CheckIncomingEmailResponse response = (CheckIncomingEmailResponse)service.Execute(request);

            int reasonCode = response.ReasonCode;

            bool shouldDeliver = response.ShouldDeliver;

        }

/// <summary>

        /// 发送批量电子邮件

        /// </summary>

        /// <param name="query">查询的条件</param>

        /// <param name="templateId">模版id</param>

        public void SendBulkMail(QueryBase query,Guid templateId)

        {

            WhoAmIRequest emailSenderRequest = new WhoAmIRequest();

            WhoAmIResponse emailSenderResponse = service.Execute(emailSenderRequest) as WhoAmIResponse;

            SendBulkMailRequest request = new SendBulkMailRequest();

            request.Query = query;

            request.Sender = new EntityReference() { LogicalName = "systemuser", Id = emailSenderResponse.UserId };

            request.RequestId = Guid.Empty;

            request.RegardingType = "systemuser";

            request.TemplateId = templateId;

            SendBulkMailResponse response = (SendBulkMailResponse)service.Execute(request);

        }

/// <summary>

        /// 使用模板发送电子邮件

        /// </summary>

        /// <param name="userId">发送人。用户id</param>

        /// <param name="contractId">接收人,联系人id</param>

        /// <param name="templateId">模版id</param>

        public void SendEmailFromTemplate(Guid userId, Guid contractId, Guid templateId)


        {

            Entity fromEn = new Entity() { LogicalName = "systemuser",Id = userId };

            Entity toEn = new Entity() { LogicalName = "contract", Id = contractId };

            Entity emailEn = new Entity() { LogicalName = entityName };

            emailEn["from"] = new Entity[] { fromEn };

            emailEn["to"] = new Entity[] { toEn };

            emailEn["subject"] = "电子邮件发送測试";

            emailEn["directioncode"] = true;

            SendEmailFromTemplateRequest request = new SendEmailFromTemplateRequest();

            request.Target = emailEn;

            request.TemplateId = templateId;

            request.RegardingId = contractId;

            request.RegardingType = "contract";

            SendEmailFromTemplateResponse response = (SendEmailFromTemplateResponse)service.Execute(request);

            Guid id = response.Id;

        }

/// <summary>

        /// 发送电子邮件

        /// </summary>

        public void SendEmail()

        {

            SendEmailRequest request = new SendEmailRequest();

            request.EmailId = emailId;

            request.IssueSend = true;

            request.TrackingToken = "";

            SendEmailResponse response = (SendEmailResponse)service.Execute(request);

            string subject = response.Subject;

        }

/// <summary>

        /// 获取用于对存储在 Microsoft Dynamics CRM 数据库中的用户或队列的电子邮件凭据进行加密或解密的密钥

        /// </summary>

        public void GetDecryptionKey()

        {

            GetDecryptionKeyRequest request = new GetDecryptionKeyRequest();

            GetDecryptionKeyResponse response = (GetDecryptionKeyResponse)service.Execute(request);

            string key = response.Key;

        }

/// <summary>

        /// 删除电子邮件

        /// </summary>

        public void Delete()

        {

            service.Delete(entityName, emailId);

        }

    }

crm操作电子邮件的更多相关文章

  1. crm操作业务部门

    using System;     using System.Linq;     using Microsoft.Xrm.Sdk;     using Microsoft.Crm.Sdk.Messag ...

  2. crm操作货币实体

    using System;     using Microsoft.Xrm.Sdk;     using Microsoft.Crm.Sdk.Messages; /// <summary> ...

  3. crm操作权限

    using System;     using Microsoft.Xrm.Sdk;     using Microsoft.Xrm.Sdk.Query;     using System.Colle ...

  4. crm操作知识库文章实体

    using System;     using Microsoft.Xrm.Sdk;     using Microsoft.Crm.Sdk.Messages;     using Microsoft ...

  5. crm操作观点

    using System;     using Microsoft.Xrm.Sdk;     using Microsoft.Crm.Sdk.Messages; /// <summary> ...

  6. crm操作安全角色

    using System;     using Microsoft.Xrm.Sdk;     using Microsoft.Crm.Sdk.Messages;     using System.Co ...

  7. crm操作产品实体

    using System;     using Microsoft.Xrm.Sdk;     using Microsoft.Crm.Sdk.Messages; /// <summary> ...

  8. crm操作销售订单实体

    using System;     using Microsoft.Xrm.Sdk;     using Microsoft.Xrm.Sdk.Query;     using Microsoft.Cr ...

  9. crm操作约会实体

    using System;     using Microsoft.Xrm.Sdk;     using Microsoft.Crm.Sdk.Messages;     using Microsoft ...

随机推荐

  1. BigDecimal类整除报错的解决方案

    例如: BigDecimal num1 = new BigDecimal("10"); BigDecimal num2 = new BigDecimal("3" ...

  2. Codeforces D. Giving Awards 412 题解

    就是依照一定顺序输出排序. 比方a欠b的钱就不能先输出a然后输出b. 本题的技巧就是.要求的是不能先输出a然后输出b,可是能够先输出b然后输出a. 故此能够依照a欠b的钱的关系.建立图,然后DFS深度 ...

  3. javascript 正则表达式判断只能是中文、英文或者中文加英文

    var reglx =/^[\u4e00-\u9fa5a-zA-Z]+$/ 这个是至少有一个中文或者英文 var reglx =/^[\u4e00-\u9fa5a-zA-Z]*$/ 这个是0个以上的中 ...

  4. java 把json对象中转成map键值对

    相关:Json对象与Json字符串的转化.JSON字符串与Java对象的转换 本文的目的是把json串转成map键值对存储,而且只存储叶节点的数据 比如json数据如下: {responseHeade ...

  5. Android Studio NDK 新手教程(5)--Java对象的传递与改动

    概述 本文主要Java与C++之间的对象传递与取值.包括传递Java对象.返回Java对象.改动Java对象.以及性能对照. 通过JNIEnv完毕数据转换 Java对象是存在于JVM虚拟机中的,而C+ ...

  6. Java实现算法之--选择排序

    选择排序也是比較简单的一种排序方法,原理也比較easy理解,它与冒泡排序的比較次数同样,但选择排序的交换次数少于冒泡排序.冒泡排序是在每次比較之后,若比較的两个元素顺序与待排序顺序相反,则要进行交换, ...

  7. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何设置PLC的扫描周期,运行周期

    双击PlcTask,然后再Cycle ticks中可以修改PLC的扫描周期,例如修改为2ms   为了验证是否真的是2ms,可以在程序中跟计数器绑定使用,PLC2ms扫描一次,计数器也是每个周期增加0 ...

  8. sipp中的action使用方法

    最近在做sip服务器的压力测试 场景:当主叫收到200 Ok之后要将Contact 头域中的字段放在ACK消息中的请求行和to头域中发给被叫 查看sipp官网文档就使用action, 在主叫脚本中增加 ...

  9. ural 1057 Amount of degrees 【数位dp】

    题意:求(x--y)区间转化为 c 进制 1 的个数为 k 的数的出现次数. 分析:发现其满足区间减法,所以能够求直接求0---x 的转化为 c 进制中 1 的个数为k的数的出现次数. 首先用一个数组 ...

  10. redux-actions

    其作用都是用来简化action.reducer. 1.安装 npm install --save redux-actions // 或 yarn add redux-actions 2.使用 crea ...