Power Apps - 使用 Flow 向来自 Collection 的用户列表发送电子邮件

Power Apps - Send Email To the List of Users from Collection Using Flow

我有一个叫作 requiredCol_1 的 collection,

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 作为另一个 collection

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

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

例如,发送至 asdfg@example.com 的电子邮件将如下所示,

To :- asdfg@example.com

Subject :- Please Look at

Body:-

Click here and Kindly review the following,

  1. Abc - 123
  2. Def - 234
  3. Ghi - 567

点击这里是一个超链接,我想通过一个变量来传递。

我是 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");

如果您想发送电子邮件,可以使用其中一个连接器,例如 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
    })

如果您希望仅在电子邮件中发送包含该电子邮件的项目,那么您需要在创建每个单独的电子邮件时过滤原始 table,例如下面的例子:

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
        }))