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. js循环遍历的两种方法for循环和for ... in 循环

    JS数组的遍历方法有两种: 第一种:一般的for循环,例如: var a = new Array("first", "second", "third& ...

  2. Docker实践2:安装Docker及weblogic镜像

    安装Docker 以root登录,运行 vi /etc/yum.repos.d/public-yum-ol6.repo,添加如下段落 [ol6_addons]name=Oracle Linux $re ...

  3. RMAN备份恢复 控制文件和归档日志丢失情况

    RMAN> backup current controlfile tag='bak_ctlfile' format='/home/oracle/backup/bak_ctl_%U_%T'; al ...

  4. es6的模块化;js的模块化

    现在感觉Java.Python.Js都是越来越工程花,模块化.懂得每个模块的功能和使用场景,你很快的就能搭起一个功能齐备的应用.至于应用的性能.稳定性等,还在于你对模块的理解深度以及组合的成熟度,就看 ...

  5. 加入新的linux系统调用

    上一篇详解了linux系统调用的原理,接下来依据上一篇的原理简介怎样创建新的linux系统调用 向内核中加入新的系统调用,须要运行3个步骤: 1. 加入新的内核函数 2. 更新头文件unistd.h ...

  6. javascript快速入门6--Script标签与访问HTML页面

    Script标签 script标签用于在HTML页面中嵌入一些可执的脚本 <script> //some script goes here </script> script标签 ...

  7. mac更新系统后Git不能用,提示missing xcrun at

    今天更新了mac系统,然后就踩了这个坑. 启动AndroidStudio 右上角提示: can't start git: /usr/bin/git probably the path to git e ...

  8. 利用forever在Linux上实现Node.js项目自启动

    在一台计算机上手动跑Node项目简单,node xx.js就搞定了,想让Node项目后台执行,尽管不能直接用node命令搞定,可是在安装了forever这个包以后.还是非常轻松的.只是要是在远程ser ...

  9. Java8 更快的原子类:LongAdder(笔记)

    更快的原子类:LongAdder      大家对AtomicInteger的基本实现机制应该比较了解,它们是在一个死循环内,不断尝试修改目标值,知道修改成功,如果竞争不激烈,那么修改成功的概率就很高 ...

  10. vue - check-versions.js for chalk

    chalk:npm 官网 修改命令输出的文字颜色.粗细等....