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. 怎么在windows7系统我的电脑中添加快捷方式

    在我的电脑中添加一些快捷方式,这样不用每次在开始菜单中去找了 2 选择开始菜单运行 3 输入:Regedit命令 4 进入路径地址:HKEY_LOCAL_MACHINE\SOFTWARE\Micros ...

  2. 一起來玩鳥 Starling Framework(2)效能測試以及Image與Texture

    上一篇我們放了一個Quad與TextField在舞台上慢慢轉.眼尖的可能會發現轉起來邊緣有點鋸齒,這可以透過設定Starling的反鋸齒來解決,在Main.as裡,新增了_starling之後,可以加 ...

  3. java源码阅读HashSet

    1类签名与注解 public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneabl ...

  4. Java调用Oracle存储过程

    package com.hp.test; import java.sql.CallableStatement; import java.sql.Connection; import java.sql. ...

  5. Java 通过JDBC连接Mysql数据库的方法和实例

    JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口 ...

  6. Asp.Net北大青鸟总结(五)-数据绑定控件

        在前面的博客我已经介绍了关于一个特殊控件也是我们经经常使用到的控件gridview的使用实现真假分页.这也是属于绑定控件的一种使用.那么我们接下来来介绍一下数据绑定这门技术吧!  一.数据绑定 ...

  7. Array,Vector,List,Deque的区别与联系【转+改】

    数组 内存连续分配,长度大小固定,内置的最基础的数据结构之一.支持随机访问和随机存储. 该类型数据所占内存空间最小. Vector 是C++ STL中的一个容器.和数组类似,它拥有一段连续的内存空间, ...

  8. Visual studio C++ MFC之列表控件CListCtrl Control

    背景 本篇旨在MSDN帮助文档下总结列表控件CListCtrl Control的使用,并列出碰到的具体问题. 正文 列表型控件List Control的类是ClistCtrl,具体成员对象详见链接,以 ...

  9. C语言-一个fopen函数中未使用二进制模式(b)引发的血案

    转自:http://blog.csdn.net/hinyunsin/article/details/6401854 最近写了一个网络文件传输模块,为了让这个模块具有更好的移植性,我尽量使用C标准IO ...

  10. LA 5009 (HDU 3714) Error Curves (三分)

    Error Curves Time Limit:3000MS    Memory Limit:0KB    64bit IO Format:%lld & %llu SubmitStatusPr ...