我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),欢迎关注我的微信公众号 MSFTDynamics365erLuoYong ,回复401或者20200408可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!

以前写过博文 Dynamics CRM邮件附件,你真的了解吗?,可以知道邮件附件使用的实体是 activitymimeattachment 。今天用Power Automate来发带附件的邮件时候进一步看了下。

先说下Web API创建邮件附件的方法,参考了 HOW TO CREATE AN ACTIVITY ATTACHMENT USING WEBAPI IN DYNAMICS 365 ,我这里提供下示例代码:


var emailId = "97117037-8379-ea11-a811-000d3a378a3a";var documentBodyInBase64 = "iVBORw0KGgoAAAANSUhEUgAAADIAA.....";var data ={    "objectid_activitypointer@odata.bind": "/activitypointers(" + emailId + ")",    "body": documentBodyInBase64,    "filename": "test.jpg",    "objecttypecode": "email",    "subject": "test.jpg",    "mimetype": "image/jpeg"}


Xrm.WebApi.createRecord("activitymimeattachment", data).then(    function success(result) {
        console.log("activitymimeattachment created with ID: " + result.id);
    },    function (error) {
        console.log(error.message);
    }
);


 

我也碰到这个帖子 Creating a new Email Attachment in Dynamics 365 碰到的问题:就是attachmentid字段必须输入,但是实际上应该不用,不设置就保存不了。

然后在这个帖子 Creating activitymimeattachment (Email attachment) Record through Microsoft Flow 中提出了利用 HTTP with Azure AD 这个Connector直接发起HTTP请求来做,的确是可以的。

配置链接的时候参考下图,也就是这两个URL都配置为Dynamics的URL。

使用Power Automate发送带附件的邮件,并将该邮件关联到Dynamics 365中的Tim_java

 然后发起的HTTP请求内容类似如下:

使用Power Automate发送带附件的邮件,并将该邮件关联到Dynamics 365中的Tim_java_02

 

 发送的邮件要显示在Dynamics 365的Timeline中可以参考 Send Dynamics 365 Emails from Power Automate  或者 Creating and Sending an Email from Dynamics 365 using Power Automate 。

需要先创建Email Messages实体(也就是email实体)记录,Description字段就是邮件正文,支持HTML,Subject就是邮件标题,Regarding (关联实体的显示名称) 字段设置为类似 /accounts(record guid) 。


 

然后调用SendEmail这个绑定操作就可以将邮件发出。

使用Power Automate发送带附件的邮件,并将该邮件关联到Dynamics 365中的Tim_java_03

 

如果是筛选某条记录的附件内容用来发邮件,筛选附件的条件可以参考如下:

使用Power Automate发送带附件的邮件,并将该邮件关联到Dynamics 365中的Tim_java_04

 

还可以参考我的博文 Power Automate实用常见问题解答(FAQ) 了解更多关于Power Automate的信息。