【前沿技术RPA】 一文学会用UiPath实现自动发送电子邮件(Email Automation)

news/2024/5/20 8:59:15 标签: rpa, 低代码, .net, wwf, 机器人

🐋作者简介:博主是一位.Net开发者,同时也是RPA和低代码平台的践行者。
🐬个人主页:会敲键盘的肘子
🐰系列专栏:UiPath
🦀专栏简介:UiPath在传统的RPA(Robotic process automation)的基础上,增加了See(AI通过计算机视觉阅读用户的计算机屏幕)和Think(通过机器学习来发现平台能够为用户构建什么自动化流程)从而不断帮助用户自动化构建流程,而不仅仅是用户自主发现,自主构建。并且在构建的过程当中,做到了Low-code甚至是No-code的程度,让每一位员工都可以自主使用。
🐶座右铭:总有一天你所坚持的会反过来拥抱你。


在这里插入图片描述

🌈写在前面:

电子邮件是最早的一种数字通信方式,时至今日,许多业务流程仍由简单的电子邮件触发,我们总是习惯性地查看收件箱。如果我们可以把很多任务可以实现自动化,那么可以节省我们宝贵的时间。在本博文中,我们将探讨如何通过使用UiPath Studio和电子邮件相关活动来快速可靠地处理电子邮件。你在读一大堆邮件的时候,是不是想过“一定有更有效的方法来做这件事”?使用UiPath,您现在可以轻松检索需要立即关注的电子邮件,处理或转发给适当的人


👉本文关键字:RPA、UiPath、Low-code、No-code、Email Automation、电子邮件自动化、OutLook、.Net

文章目录

      • 1️⃣ 背景
        • ♈ 什么是RPA
        • ♉ 什么是UiPath
        • ♊ 为什么使用UiPath
        • ♋ 为什么要用电子邮件自动化
        • ♌ 案例
      • 2️⃣ 概述
        • ♈ 环境
        • ♉ 摘要
      • 3️⃣ 电子邮件自动化(Email Automation)
        • ♉ 发送邮件
          • ⭐ 背景知识
          • ⭐Send SMTP Mail Message
          • ⭐ 按预设好的模板发送电子邮件
          • ⭐ Sending a Calendar Invite with Outlook Integration
      • 4️⃣ 总结
      • 5️⃣ 参考资料

1️⃣ 背景

♈ 什么是RPA

RPA(Robotic process automation) 代表机器人过程自动化

它是一种软件程序,可在与计算机应用程序交互时模仿人类行为并实现重复的、基于规则的流程的自动化。

♉ 什么是UiPath

UiPath 是一种机器人流程自动化工具,用于自动化枯燥和重复的任务。它由罗马尼亚企业家 Daniel Dines 和 Marius Trica 于 2005 年创立。它还消除了自动化无聊任务的人工干预,并为所有活动提供了拖放功能,它是最简单的 RPA 工具。

♊ 为什么使用UiPath

UiPath在传统的RPA的基础上,增加了See(AI通过计算机视觉阅读用户的计算机屏幕)和Think(通过机器学习来发现平台能够为用户构建什么自动化流程)从而不断帮助用户自动化构建流程,而不仅仅是用户自主发现,自主构建。并且在构建的过程当中,做到了Low-code甚至是No-code的程度,让每一位员工都可以自主使用。

♋ 为什么要用电子邮件自动化

电子邮件是最早的一种数字通信方式,时至今日,许多业务流程仍由简单的电子邮件触发,我们总是习惯性地查看收件箱。在关键流程方面,电子邮件仍然是大多数公司的首选

我们以一些服务器为例,它们在一天中生成不同的警报消息。为了加快速度,我们可能希望自动地去分发警报的过程,以便正确的人及时获得正确的警报消息。一种方法是根据主题、日期、正文内容或发件人等不同标准过滤电子邮件,然后将它们分别发给对应的人。UiPath就帮我们实现了这些功能,并涵盖了各种协议,如IMAP、POP3或SMTP。UiPath还提供活动专门用于Outlook和Exchange的。

♌ 案例

为了更好地理解软件包中邮件活动的可用性,让我们从更高的层次来看如何自动分发由多个服务器生成的电子邮件警报

考虑有三台服务器生成不同类型的警报,这些警报将发送到单个邮箱帐户。此时,1级技术人员必须确认并过滤电子邮件。之后,他们会按照特定程序升级或自行处理警报,该过程的主要步骤如下图所示。

在这里插入图片描述

可以看出,这是一项重复性的任务,具有稳定的流程和明确的指导方针。因此它非常适合被自动化取代。我们接下来将探讨如何通过使用UiPath Studio和电子邮件相关activity来快速可靠地处理电子邮件,以节约我们的宝贵的时间。

2️⃣ 概述

♈ 环境

  • UiPath Studio Community 2022.4.3

  • Windows 10

  • .Net

♉ 摘要

电子邮件是最早的一种数字通信方式,时至今日,许多业务流程仍由简单的电子邮件触发,我们总是习惯性地查看收件箱。如果我们可以把很多任务可以实现自动化,那么可以节省我们宝贵的时间。在本博文中,我们将探讨如何通过使用UiPath Studio和电子邮件相关活动来快速可靠地处理电子邮件。你在读一大堆邮件的时候,是不是想过“一定有更有效的方法来做这件事”?使用UiPath,您现在可以轻松检索需要立即关注的电子邮件,处理或转发给适当的人

3️⃣ 电子邮件自动化(Email Automation)

♉ 发送邮件

⭐ 背景知识

UiPath Studio集成了多个活动,可帮助您根据使用的服务器发送电子邮件。

System.Net.Mail.MailMessage表示在UiPath中处理电子邮件时的主要数据类型。无论何时需要获取或转发电子邮件,都将使用此数据类型。

当使用Studio中的一个电子邮件活动发送电子邮件时,您可以添加主题、自定义正文、附件,甚至使用模板来完成所有这些。您还可以使用Orchestrator AssetRead Text File活动来访问模板。

⭐Send SMTP Mail Message

本节我们将学习如何使用Gmail通过简单邮件传输协议SMTP自动发送单个附件和多个附件电子邮件。

在这个场景中,我们将向同一个电子邮件地址发送一封包含单个附件的电子邮件,其中包含一个PDF文件另一封包含多个附件的电子邮件(其中包含三个PNG文件)。在构建自动化之前,让我们在自动化项目中为附件创建一个Data文件夹。

在这里插入图片描述

我们将从获取用户名和密码活动开始,这样我们就可以访问Gmail帐户。从保存的凭据部分,我们将选择我们的凭据集GmailCredentials。请注意,我们在这里使用的任何凭据都必须事先在Windows凭据管理器中创建。

让我们也为它们创建一个变量。我们称之为GmailCredentials。

在这里插入图片描述

接下来,让我们添加Send SMTP Mail Message activity,我们将在其中添加收件人电子邮件主题电子邮件正文。这将是包含单个附件的电子邮件。

在这里插入图片描述

那么,我们该如何附加文件呢?

在属性面板中,我们将打开附件部分并创建一个In Argument,它的值将是本地文件的路径

在这里插入图片描述

在发送电子邮件之前,我们需要更新主机部分中的一些其他属性,例如端口值和服务器值smtp.gmail.com

在这里插入图片描述

在登录部分,我们需要添加用于发送电子邮件的帐户的电子邮件地址,我们将使用前面创建的Gmail凭据变量及其密码。

就这样,工作流已完全配置为发送单个附件电子邮件。

接下来,我们可以创建一个列表并遍历每个文件。让我们继续添加For Each File活动并进行配置!

我们将更新文件夹名称,因为我们只对png格式的文件感兴趣,所以我们将用wildcard.png填充过滤器。

在这里插入图片描述

要创建列表,我们需要一个TypeArgument设置为StringAdd To Collection活动,将一个集合定义为AttachmentsList,然后将当前文件的全名添加为集合项。我们不要忘记用新的字符串列表实例化AttachmentsList变量,并将其范围扩大到序列,以便我们也可以在下一个活动中使用。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

现在,让我们通过在For Each File In Folder活动下复制Send SMTP Mail Message活动来重新使用它。作为最佳实践,我们将更新第一个发送SMTP活动的名称以反映单个附件,并更新第二个以反映多个附件。这里还有一些更新需要执行。我们需要更新电子邮件正文和标题,以便它引用多个附件。让我们用新的AttachmentsList变量替换保存pdf单个附件文件路径的变量。

在这里插入图片描述

让我们来执行这个项目吧!

让我们查看Gmail收件箱。我们可以看到,我们收到了单个和多个附件电子邮件。让我们打开一个附件,我们可以看到正确的标题、正文和PDF文件。

现在,让我们查看多附件电子邮件,对于这封邮件,我们有正确的标题、正文和多个附件。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

⭐ 按预设好的模板发送电子邮件

通过本节我们将知道如何

  • 创建并阅读电子邮件正文中使用的模板

  • 创建列表变量类型以存储收件人地址。

  • 使用String dot Format表达式配置邮件正文。

  • 截屏并存储其输出,以供自动化过程使用。

  • 并使用Send Outlook Mail Message活动发送带有附件的电子邮件。

我们将构建一个简单的流程来向收件人列表发送Outlook电子邮件。电子邮件正文使用模板中的文本并包含附件。

让我们打开Main。既然我们想使用电子邮件模板并包含附件,那么让我们首先添加一个新文件夹来存储这些内容。

使用模板进行电子邮件自动化很容易。我们只需要编写消息,将其保存为文本文件,然后在工作流中调用它。

可以为此,让我们打开Data文件夹并创建一个新的文本文档来保存我们的消息。花括号包含收件人的索引,0是第一个索引。运行进程时,此值将被实际收件人名称替换。

在这里插入图片描述

为了阅读模板,让我们添加一个Read Text活动并重命名顶部序列。要选择模板,让我们浏览到保存文本文件的位置并选择它。要存储模板文本,我们必须在“输出到”属性字段中创建一个新变量。

在这里插入图片描述

让我们将其命名为EmailTemplate,并相应地重命名该活动。

现在,让我们定义收件人列表。为此,让我们转到“变量”面板,创建一个名为“收件人列表”的新变量,并确保我们设置了正确的变量类型。即字符串列表。

在这里插入图片描述

我们可以在System.Collections.Generic下找到我们正在寻找的正确类型。

接下来,让我们打开默认的表达式编辑器。在这里,我们可以编写以下表达式来初始化一个新列表,并用收件人的电子邮件地址填充它。

这里我们只添加了一个收件人,但要知道,只需键入一个新地址并在地址之间添加一个逗号,就可以添加更多收件人。既然我们已经定义了收件人列表,那么让我们指定每个收件人需要哪些操作。不要忘记将“类型参数”从“对象”更改为“字符串”。

在这里插入图片描述

接下来,我们想在“收件箱”文件夹中截取其中一封电子邮件的屏幕截图,然后将其附加到电子邮件中。为此,我们首先需要添加“使用应用程序或浏览器”活动。

在这里插入图片描述

我们现在可以指定要自动化的应用程序,即Outlook。

要截屏,我们添加一个Take Screenshot活动,并在“收件箱”文件夹中指明一个元素。让我们选择一个新的电子邮件通知,以及“未读”标签。要存储输出,我们必须选择“图像”并创建一个新变量。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

现在我们可以将屏幕截图保存在首选位置。我们添加Save Image活动,引用屏幕截图附件变量,浏览到要保存图像的位置,并提供名称。

在这里插入图片描述

我们现在可以发送邮件了。因此,让我们添加Send Outlook Mail Message活动。我们指定收件人,写主题,对于正文,让我们添加一个表达式来使用我们的模板。

在这里插入图片描述

要只在电子邮件正文中添加收件人的姓名,而不添加电子邮件域,我们可以拆分字符串并选择“first”,只写第一部分,即“at”字符之前。

现在单击“附加文件”添加附件。这里,我们将参数的方向指定为“In”,确保类型为String,并添加图像所在的位置。

在这里插入图片描述

在这里插入图片描述

接下来,让我们添加一条日志消息来通知我们流程的执行情况。

在这里插入图片描述

通过检查Outlook收件箱文件夹,我们可以看到电子邮件已发送和接收。电子邮件包括收件人的姓名、模板中的文本和保存的附件。

在这里插入图片描述

⭐ Sending a Calendar Invite with Outlook Integration

这节我们将构建一个流程,从Excel文件中获取电子邮件地址,并使用Outlook的集成活动发送电子邮件邀请。将根据我们将设置的配置发送到每个电子邮件地址。

让我们在项目中创建一个文件夹,用于存储与会者列表。在新创建的文件夹中,让我们添加包含与会者列表的Excel文件。

首先,让我们阅读Excel文件。为此,我们当然使用了工作簿Read Range活动。我们指定文件的路径并删除范围。让我们不要忘记用描述性的方式命名我们的活动并创建一个DataTable变量,它将保存我们的参与者列表。

在这里插入图片描述

接下来,我们将使用Send Calendar Invit活动,该活动需要添加到Use Desktop Outlook App活动中。

在这里插入图片描述

这里有一个快速提示,必须在“使用Outlook 365”、“使用Gmail”或“使用桌面Outlook应用程序”活动中添加“发送日历邀请”活动。

在这里插入图片描述

我们将该帐户称为Outlook。

让我们将其命名为Developer meeting

现在,对于必填与会者字段,我们需要一个表达式来容纳与会者列表。

正如前面提到的,Outlook只接受一种类型的字符串。

在这里插入图片描述

因此,我们用一个字符串填充该字段,该字符串是通过连接数据表“与会者”列中的所有值而获得的,值之间用分号分隔。

在这里插入图片描述

接下来,让我们设置当前日期、时间并指定持续时间。

我们还可以提供有关地点的详细信息,如Zoom meeting

要检查的一个重要属性是保存而不发送字段。如果选中,会议将保存到我们的日历中,但邀请不会发送给其他与会者。

这是会议邀请,完美!

在这里插入图片描述

4️⃣ 总结

  • 在自动化发送单个附件电子邮件的过程时,我们需要创建一个in argument ,将文件的路径存储在Send SMTP Mail Message活动的Attachments部分。

  • 当自动发送多个附件的过程时,我们需要使用For Each File in Folder活动以及Add To Collection活动来遍历我们在文件夹中指定的每个文件。在我们的例子中,我们配置了一个过滤器,它只从数据文件夹中附加png文件。

  • 要创建模板,我们必须将消息写入新的文本文档中,然后使用Read Text活动来阅读它。

  • 要存储模板文本,我们必须在Output to属性字段中创建一个新变量。

  • 要将截图附加到电子邮件,我们需要使用Take Screenshot活动,然后将结果存储为变量。

  • Send Outlook Mail Message活动从Outlook发送电子邮件。

5️⃣ 参考资料

About the Mail Activities Pack
App Integration


⭐写在结尾:

文章中出现的任何错误请大家批评指出,一定及时修改。

希望写在这里的小伙伴能给个三连支持


http://www.niftyadmin.cn/n/2952.html

相关文章

mysql备份与还原

一、备份 全量备份(数据结构):mysqldump -uroot -p123456 -A > 备份文件路径 指定库备份(数据结构): mysqldump -uroot -p123456 库名 > 备份文件路径 多个库备份(数据结构&#xff09…

猿创征文|嵌入式系统应用开发工具链必备

目录猿创征文|嵌入式系统应用开发工具链必备硬件设计工具STM32Cube 系列电路设计工具EDA代码预调试工具Code::Blocks嵌入式软件调试工具keil整机调试工具--串口助手整机调试工具--网络调试助手NetAssist量产工具STM32 ST-LINK Utility猿创征文|嵌入式系统…

X-ray Photoelectron Spectroscopy (XPS)——* 化学位移

这里面最主要的是光电子能谱分析仪,需要用到高真空,超高真空 所有的原理80%是相似的,为什么要用高真空,超高真空? X射线就是光,你打出来的光,发射出来的是光电子,光是如何转化成电的…

C++之STL中vector模拟实现

这里是目录呀前言一、vector基本结构二、定义vector结构及实现析构函数三、构造函数四、拷贝构造函数五、迭代器六、空间操作1.获取有效数据size()2.resize()改变对象中有效元素size()的值3.capacity(),获取数据容量4.empty()判空函数5.reverse()增大vector的容量6.swap()交换数…

vue3 setup实现响应式

小伙伴们开始学习vue3了嘛 以下是俺的笔记 总结 了解跟多看 1.响应式 直接使用看 2.响应式 1.响应式 注:ref和reactive都需要引入,不管是方法还是数据,都需要在setup最后return才可以在Dom使用 (1&#…

C#基础:类class与结构struct的区别

一、类class 类class是引用类型,可以直接赋值为null,默认值也是null XClass xClass null;//语法正确 一般来说,某个类对象使用另一个类的对象赋值时,则两者共用一个内存地址【节约内存空间】,ReferenceEquals引用比…

在公司项目中使用git的简单手册

配取公钥 ssh-keygen -t rsa//回车三下找到.ssh安装 拉取仓库 git clone XXXXXX//(仓库地址,默认拉取到master) 或者 git clone XXXXXX 某个分支名查看日志 git log //退回为 Q创建一个自己的开发分支 git branch XXXX //分支名查看分支…

电脑蓝屏是哪里出了问题?不一定要非要重装系统

电脑蓝屏是非常常见的电脑故障现象,导致电脑蓝屏的原因很多,很多人第一时间反应可能是给电脑重装系统,但是有时并不能解决问题。那么电脑蓝屏是哪里出了问题呢?其实导致蓝屏不一定是系统故障,还有很多情况也会出现蓝屏…