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. WebLogic Server 12.2.1 多租户安装配置

    1.安装WebLogic 12.2.1版本 下载安装的时候记住选择Fusion Middleware Infrastructer Installer. 2.安装OTD OTD需要单独下载安装,安装的时 ...

  2. Jenkins任务优先分配到原来的执行节点上

    Jenkins一般部署采用master-salve架构,这样可以同时构建多个任务. jenkins任务构建时默认使用第一次随机分配的机器,这样可以增量拉取代码,减少gitlab或者github的负担. ...

  3. Objective-C:运行时runtime

    1.是否可以把比较耗时的操作放在通知中心中?   通知在哪一个线程发的,那么对通知事件的处理就在同一个线程中进行; 如果在异步线程发的通知,那么可以执行比较耗时的操作: 如果在主线程发的通知,那么就不 ...

  4. CentOS7.x 通过mail命令发,使用465端口(smtps协议)发送邮件

    #创建证书mkdir -p /root/.certs/echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CE ...

  5. http://blog.csdn.net/huang_xw/article/details/7090173

    http://blog.csdn.net/huang_xw/article/details/7090173

  6. Android手掌抑制功能的实现

    近期须要实现一个功能,在Activity中有一个手写区域,为了更好的用户体验,须要满足即使整个手掌放在屏幕上时(android平板,屏幕比較大)也仅仅响应手写区域内的操作,即在支持多点触控的情况下,仅 ...

  7. Can we say objects have attributes, states and behaviors?

    15down votefavorite 3 I was reading through Oracle's introduction to OOP concepts and I came across ...

  8. 更改Eclipse下Tomcat的部署目录

    转自:http://kingxss.iteye.com/blog/1741438 前言 今天tomcat启动就报错,后来查原因是因为异常关闭tomcat的原因,需要删除一个sessions.ser的文 ...

  9. HTML--百度百科

    超文本标记语言,标准通用标记语言下的一个应用. “超文本”就是指页面内可以包含图片.链接,甚至音乐.程序等非文字元素. 超文本标记语言的结构包括“头”部分(英语:Head).和“主体”部分(英语:Bo ...

  10. Android编程之常识 - 混淆

    1,什么是混淆编译 ProGuard是一个免费的java类文件压缩,优化,混淆器.它探测并删除没有使用的类,字段,方法和属性.它删除没有用的说明并使用字节码得到最大优化.它使用无意义的名字来重命名类, ...