Email Helper
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); }
}
Email Helper的更多相关文章
- 使用Spring发送Email
配置Spring发送邮件 Spring发送邮件底层还是使用JavaMail,我在http://www.cnblogs.com/lz2017/p/6882925.html 中记录过关于JavaMail的 ...
- ASP.NET Core 中文文档 第四章 MVC(3.6.2 )自定义标签辅助类(Tag Helpers)
原文:Authoring Tag Helpers 作者:Rick Anderson 翻译:张海龙(jiechen) 校对:许登洋(Seay) 示例代码查看与下载 从 Tag Helper 讲起 本篇教 ...
- 来玩Play框架04 表单
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 表单(form)是最常见的从客户往服务器传递数据的方式.Play框架提供了一些工具 ...
- 来玩Play框架06 用户验证
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 用户验证(User Authentification)复合的使用Play框架的数个 ...
- [asp.net core]定义Tag Helpers
原文地址 https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/authoring Getting started wi ...
- Play框架的用户验证。
最近刚刚参与一个基于Play框架的管理平台的升级工作,其中涉及到了用户的验证工作.第一次接触play框架,直接看已有代码,有点晕.因此,自己实现了一个简单的用户验证功能. 首先,新建一个User类,包 ...
- SpringBoot学习笔记(12)----SpringBoot实现多个 账号轮询发送邮件
首先,引入发送邮件的依赖,由于freemarker自定义模板,所以也需要把freemarker的依赖引入 pom.xml文件 <dependency> <groupId>org ...
- play框架之ORM
初次接触play2,采用的ebeans作为ORM框架.网上的资料并不多,总结如下: 数据的查询可以放在model类里,也可以放在controllers里面,我更倾向于后者,感觉数据流比较完整,好理解, ...
- 测开之路一百四十九:jinja2模板之宏
jinja2是python的模板引擎, 在写python web使用的过程中,macro可以节省大量的代码 比如上一篇的渲染页面 <!DOCTYPE html><html lang= ...
随机推荐
- Java—IO流 字符流
java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码). 文件是byte byte byte ... 的数据序列. 文本文件是文本(char)序列按照某种编码方案(uf ...
- 修改虚拟机ip备份
修改虚拟机ip 因为别人写的很好,在此备份一下.
- how to do error handing with WCF by using attributes to log your errors z
There are multiple ways to do error handling in WCF as listed by Pedram Rezaei Blog. The default way ...
- canvas游戏和动画中的碰撞检测(2种简单方式)
碰撞检测关键步骤 碰撞检测需要处理经历下面两个关键的步骤: 计算判断两个物体是否发生碰撞 发生碰撞后,两个物体的状态和动画效果的处理 计算碰撞 只要两个物体相互接触,它们就会发生碰撞. 矩形物体碰撞检 ...
- July 26th 2017 Week 30th Wednesday
A man can't ride your back unless it is bent. 你的腰不弯,别人就不能骑在你的背上. Have you ever ride a horse, or ride ...
- Android Studio 独立引入(非友盟)微博分享和回调时问题
最近同事在做一个小项目时,由于产品的要求,Wap页面的分享规定不能使用友盟的社会化组件.他则不得不手动一个一个渠道的引入分享,好在渠道不多就三个,但是第一微博分享引入的时候问题就出现了. 问题一:li ...
- tq2440 jlink连接问题
由于工作转向做嵌入式linux平台上的手台通信协议开发,所以想系统的学习一下嵌入式linux的开发流程. 向同事借了tq2440的板子来玩,一边看书,一边做实验,看的书是<嵌入式linux基础教 ...
- 显示锁(ReentranLock)
1. Lock接口:定义了一组抽象的加锁操作,提供了一种无条件的.可轮询的.定时的以及可中断的锁获取操作,所有的加锁和解锁的方法都是显示的. 2. ReentrantLock锁:实现了Lock接口,并 ...
- SOJ4480 Easy Problem IV (并查集)
Time Limit: 3000 MS Memory Limit: 131072 K Description 据说 你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过六个人你就能够认识任 ...
- Tomcat的webapps目录下的classes文件夹下缺失编译好的.class文件原因及其解决方法
右键,选择BuildPath: 可以编辑Output folder,指定编译后的文件的存放目录,一般是target/classes目录