Power Apps-使用Flow将电子邮件发送到集合中的用户列表

时间:2019-04-24 17:33:52

标签: flow powerapps powerapps-formula powerapps-collection

我有一个像这样的集合称为requiredCol_1,

Name      ID      ToAddress                                                        Status
Abc       123     asdfg@example.com,koldef@example.com,asdasdasfda@example.com        A        
Def       234     nanasd@example.com,asdfg@example.com                                A
Ghi       567     asdfg@example.com,asdasfg1@example.com                              A

我希望向每个用户发送电子邮件,每个用户应该只收到一封电子邮件。

为此,

我已经创建了requiredCol_2作为另一个集合

ToAddressUnique
asdfg@example.com
koldef@example.com
asdasdasfda@example.com
nanasd@example.com
asdasfg1@example.com

我现在设法缩小了我的问题范围。 上述集合(requiredCol_2)中的每个用户都会收到一封电子邮件。然后,我的电子邮件正文将连接名称和ID,并采用与该特定电子邮件ID相关的列表的形式。

例如,发送到asdfg@example.com的电子邮件看起来像

  

致:-asdfg@example.com

     

主题:-请注意

     

身体:-

     

点击此处,请仔细阅读以下内容,

     
      
  1. Abc-123
  2.   
  3. Def-234
  4.   
  5. Ghi-567
  6.   

单击此处是超链接,我想通过变量进行传递。

我是Powerapps和Flow的新手。因此,请向我解释使此功能生效的步骤。

到目前为止,这是我在Power Apps中的代码-发送电子邮件按钮

//Create a Collection
ClearCollect(requiredCol_1 , Filter(Table1, User().Email in Lower(Allocators), Status = "A"));

//Unique List of Approvers
ClearCollect(requiredCol_2,Distinct(
    Split(
        Concat(requiredCol_1 , ToAddress, ","),
        ","),
    Result));
//Hyperlink Creation
set (hyperlinkvalue, "WWW.Google.Com");

1 个答案:

答案 0 :(得分:1)

如果要发送电子邮件,可以使用其中一种连接器,例如Outlook.com或Office 365(以及其他)。而且,如果您希望电子邮件具有超链接,那么您将需要发送HTML电子邮件,并且需要在应用程序中编写HTML。例如,下面的代码片段显示了如何使用Outlook.com连接器发送电子邮件(Office 365的语法将相同或非常相似):

//Create a Collection
ClearCollect(
    requiredCol_1,
    Filter(Table1, User().Email in Lower(Allocators), Status = "A"));

//Unique List of Approvers
ClearCollect(requiredCol_2,Distinct(
    Split(
        Concat(requiredCol_1 , ToAddress, ","),
        ","),
    Result));

//Hyperlink Creation
Set(hyperlinkvalue, "WWW.Google.Com");

// E-mail body
Set(
    mailBody,
    Concatenate(
        "<p><a href=""",
        hyperlinkvalue,
        """>Click here</a> and kindly review the following:</p>",
        "<ol>",
        Concat(
            requiredCol_1,
            "<li>" & Name & " - " & ID & "</li>"
        ),
        "</ol>"
        ));

// Send e-mail
'Outlook.com'.SendEmail(
    Concat(requiredCol_2, Result, ","),
    "Please look at",
    mailBody,
    {
        IsHtml: true
    })

如果您希望只发送包含该电子邮件的邮件,那么在创建每个电子邮件时,您将需要过滤原始表,如下例所示:

Set(hyperlinkValue, "www.google.com");
ClearCollect(
    distinctUsers,
    Distinct(Split(Concat(requiredCol_1, ToAddress, ","), ","), Result));
ClearCollect(
    distinctUsersWithEmail,
    AddColumns(
        distinctUsers,
        "mailBodyForUser",
        Concatenate(
            "<p><a href=""",
            hyperlinkValue,
            """>Click here</a> and kindly review the following:</p>",
            "<ol>",
            Concat(
                Filter(requiredCol_1, Result in ToAddress),
                "<li>" & Name & " - " & ID & "</li>"
            ),
            "</ol>"
        )));
ForAll(
    distinctUsersWithEmail,
    'Outlook.com'.SendEmail(
        Result,
        "Please look at",
        mailBodyForUser,
        {
            IsHtml: true
        }))