Power Apps - отправка электронной почты в список пользователей из коллекции с помощью Flow - PullRequest
1 голос
/ 24 апреля 2019

У меня есть коллекция с именем 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

Я хочу отправить электронное письмо каждому пользователю, и каждый пользователь должен получить только одно электронное письмо.

Для этого

Я создал требуемый COL_2 в качестве другой коллекции

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

Мне удалось сузить свою проблему сейчас. Каждый пользователь из вышеуказанной коллекции (requiredCol_2) получит электронное письмо. И мое тело электронной почты будет объединено с именем и идентификатором в виде списка, соответствующего этому конкретному идентификатору электронной почты.

Например, электронное письмо, отправленное на asdfg@example.com, будет выглядеть так:

Кому: - asdfg@example.com

Тема: - Пожалуйста, посмотрите на

Тело: -

Нажмите здесь и просим просмотреть следующее,

  1. Abc - 123
  2. Def - 234
  3. Гхи - 567

Нажмите здесь - гиперссылка, которую я хочу передать через переменную.

Я новичок в Powerapps и поток. Поэтому, пожалуйста, объясните мне шаги, чтобы заставить это работать.

Это мой код в 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 Ответ

1 голос
/ 24 апреля 2019

Если вы хотите отправить электронное письмо, вы можете использовать один из соединителей, таких как 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
        }))
...