Power Apps - отправка электронной почты в список пользователей из коллекции с помощью Flow

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

Решение

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