2023年11月30日发(作者:)
utomationIntroduction
学习⼤纲:
如何使⽤电⼦邮件相关的专⽤活动
如何发送和接受邮件
如何筛选邮件及下载附件
如何使⽤邮件模板
1. 与Email进⾏交互
1) Email作为Input:
从Email标题和主体部分获取⽂本信息,如名称、ID等。
从Email附件中获取各种⽂件,如xlsx、pdf⽂件等。
2) Email作为Output:
发送进度报告。
发送意外情况提醒,⽐如应⽤程序报错。
3) Email相关的活动:
SMTP:Simple Mail Transfer Protocol。⼀种基础的邮箱协议,仅能⽤来发送消息。
POP3:Post Office Protocol。⼀种古⽼到⼏乎被淘汰的协议,⽤来收取消息。但是⼤部分的邮件服务器⽀持这种协议。
IMAP:Internet Message Access Protocol。仅能⽤来收取消息,但UiPath还提供⼀些功能,可以标记消息为已读,或将邮件移动到其
他⽂件夹。
Exchange:微软提供的企业级电⼦邮件解决⽅案。UiPath能很好地与之整合,可以发送消息,收取消息,移动邮件,删除邮件。
Outlook:与上述⼏种略有不同,Outlook的相关活动是与应⽤程序的API进⾏交互。在运⾏时,这些活动已经有了背景信息(基于已有
的Outlook账户的设置),因此不需要再为它们设置服务器名、⽤户名及填写其他的技术信息。
UiPath还提供了两个通⽤的Mail活动,⽤来将邮件和邮件中的附件保存到本地磁盘中。
2. 查看/检索邮件
1) Get Mail Messages活动
UiPath提供了下列4种Get Mail Messages活动。它们的功能相同,提供的可选参数也⾮常相似。
Get POP3 Mail Messages
Get IMAP Mail Messages
Get Exchange Mail Messages
Get Outlook Mail Messages
可选参数:
Host - MailFolder:指定从某个特定的邮箱⽂件夹⾥收取消息。
Options - OnlyUnreadMessage:只获取未读消息。
Options - MarkAsRead:标记为已读。与OnlyUnreadMessage⼀起使⽤,可以避免⼀些重复操作。
Options - Top:限制收到电⼦邮件的最⼤数量。
2) Connection参数
Connection的参数是⽤来设置服务器连接的。需要填写⽤户邮箱和密码,该邮箱的服务器地址和端⼝(port)⼀般也是必填的。
注意:在没有填写Connection相关参数的情况下,IMAP和POP3的Get Mail Messages活动出现了有效性警告标志,但是Outlook和
Exchange的却没有。这是由于Exchange和Outlook的活动可以使⽤默认值并且⾃动获取服务器的信息,⽽POP3和IMAP的活动必须要填写
Connection参数才能运⾏。
3) 最便利的选择
如果已经配置好Outlook,那么使⽤Outlook活动来收取邮件是最便利的选择。因为它需要设置的参数最少,并且还提供了额外的功能,⽐如
Filter功能。使⽤Outlook活动可以兼容任何邮件协议。
4) ⽰例1:使⽤Get IMAP Mail Messages活动检索邮件。
设置Connection参数:参数信息通常由电⼦邮件的供应商或者IT部门提供。此例使⽤Google邮箱,在参数Server⾥填⼊
;Port⾥填⼊993;Email和Password⾥填⼊邮箱和密码,此处使⽤变量来表⽰。
设置其他参数:勾选OnlyUnreadMessages参数,设置为仅读取未读消息;将Top参数设置为5,使读取消息的上限为5条;将消息存
储到变量messages中,该变量为List
添加For Each活动在获取的邮件列表中循环检索。在For Each活动的TypeArgument参数⾥设置item的类型为MailMessage型。将item
改为mail。
注意:搜索MailMessage类型时会获得两个结果,我们要使⽤的是下的MailMessage类型。
在For Each循环⾥添加⼀个Message Box活动来显⽰邮件的标题。输⼊mail.会出现下拉菜单,其中包括主体、标题、收件⼈、寄件⼈
等很多选项,此处选择显⽰t。
最终的Workflow显⽰为:
5) ⽰例1拓展:基于实例1,根据已知的命名规则来筛选邮件,将符合命名规则的邮件中的附件下载到本地。
Email命名⽰例:Employee #123456 personal data change request
将For Each活动⾥的Message Box活动删除,并添加⼀个If活动。将条件设置为ns("personal data change
request")。
在If活动的Then⾥添加⼀个Save Attachments活动。MailMessage参数设置为mail(循环变量),FolderPath参数设置存储附件的路径
为”Attachments“。
附加要求:将每个邮件的附件分别存储在指定路径的⼦⽂件夹中,并⽤Employee ID命名该⼦⽂件夹。
添加⼀个字符串型变量employeeNumber。
在Save Attachments活动之前添加⼀个Assign活动。左边填⼊变量emloyeeNumber,右边填⼊("#".ToCharArray)
(1).Split(" ".ToCharArray)(0)。
将Save Attachments活动的FolderPath更改为"Attachments/" + employeeNumber。
注意:("#".ToCharArray)(1)将标题Employee #123456 personal data change request分隔为Employee和123456 personal
data change request两部分,(1)表⽰取第⼆个值;.Split(" ".ToCharArray)(0)表⽰将123456 personal data change request通过空格进⾏分
隔,取其中的第⼀个值,即123456。
6) ⽰例2:使⽤Get Outlook Mail Messages通过筛选获取24⼩时内的邮件。
添加⼀个Get Outlook Mail Messages活动,创建⼀个List
选中的,不需要做更改。
使⽤ng可以获取未读邮件的数量。
添加⼀个
For Each活动
,在未读邮件中循环。MailMessage对象的⼤部分属性可以从邮件的标题中提取,但不包括时间戳。时间需要⽤s("Date")
来提取。
使⽤Headers筛选的缺点:Email需要先读取邮件才能获得邮件的Headers属性,这可能会拖慢运⾏速度。
Outlook提供了⾮常⽅便的筛选参数Filter,可以通过不同的标准进⾏筛选,如Subject,SenderEmailAddress,ReceiveTime等。如果
要筛选24⼩时内收到的邮件,可以写⼊"[ReceivedTime] > 01/18/2017 12:38 PM"。但是通常情况下,我们不会把⽇期写成⼀个固定的
值,所以“24⼩时内”将会表⽰为:"[ReceivedTime] >= '" + s(-2).ToString("MM/dd/yyyy hh:mm tt") +"'"。
(-1)表⽰现在的时间减去⼀天。
Filter功能的实现依赖于Microsoft组件,更多的Expression详情可以参见Microsoft的官⽅⽂档 。
3. 发送邮件
1) Send Mail Messages活动
UiPath提供了下列3种Send Mail Messages活动。
Send SMTP Mail Messages (SMTP=Simple Mail Transfer Protocol)
Send Outlook Mail Messages
Send Exchange Mail Messages
2) ⽰例:发送⼀封邮件。
添加⼀个Send SMTP Mail Messages活动。
设置活动的Connection参数。使⽤Google的服务器,Server参数为,Post参数为587参数Email和Password。
设置活动的Logon参数,使⽤变量表⽰Email参数和Password参数;还可以设置Sender下的Name参数来⾃定义发件⼈的名称。
最后填⼊在To⾥写⼊收件⼈邮箱,Subject⾥写⼊邮件标题,Body⾥写⼊邮件正⽂即可。
3) ⽰例拓展:使⽤更规范的正⽂,并添加附件。
将正⽂写⼊⼀个txt⽂本⽂件⾥,添加⼀个Read Text File活动读取该⽂件,并保存在变量template中。
直接把正⽂写到Body参数⾥会⽐较难管理和维护,更⽅便的做法是使⽤模板⽂件,模板⽂件可以使⽤HTML格式或者纯⽂本格
式。
使⽤template的另⼀个好处是,通过功能,在运⾏程序时把⽂本中的占位符更改为动态内容。
将Send SMTP Mail Messages活动的Body参数设置为(template, Now),可以在运⾏时将占位符{0}更改为实时时间。
添加⼀个Take Screenshot活动,该活动会⽣成⼀个png图⽚。创建⼀个Image型变量screenshot⽤来保存图⽚。
添加⼀个Save Image活动,将screenshot保存在硬盘上。Send Mail活动的附件只接受⽂件路径,因此需要将图⽚保存下来。
点击Send SMTP Mail Messages活动中的Attach Files,在弹出的窗⼝中填写添加附件的路径。
运⾏程序将收到下图中的邮件。
4. 练习1
1) 要求:读取收件箱中的邮件并对邮件进⾏排序,按照Excel⽂件中规定的规则将邮件移动到不同的⽂件夹⾥。
*如果邮件的发件⼈地址中包含Sender列⾥的某个值,则将这封邮件移动到对应的Folder列的邮件⽂件夹⾥。
2) 流程:此处使⽤Get Outlook Mail Messages活动来完成练习。使⽤其他Get Mail活动的流程略有不同,但主逻辑和⽤到的活动⼤致相同。
添加⼀个Get Outlook Mail Messages活动,使⽤Outlook的默认账户,设置好从哪个⽂件夹⾥读信,将读取的邮件存储在
List
添加⼀个Read Range活动来读取Excel⽂件中的规则,创建⼀个DataTable型变量mailRules来保存规则。
添加⼀个For Each活动建⽴循环,需要设置循环个体的TypeArgument为MailMessage型以在邮件中进⾏循环。
添加⼀个For Each Row活动,在DataTable变量mailRules中进⾏循环,判断某⼀封邮件是否符合任⼀规则。
添加⼀个If活动,判断邮件的发件⼈地址是否包含mailRules中的Sender列的值。
如果包含,则添加⼀个Move Outlook Mail Message活动,将邮件移动到对应⾏Folder列的值表⽰的⽂件夹中。
我们还需要添加⼀个断点,当邮件已经符合某⼀规则就跳出For Each Row活动。
5. 练习2
1) 要求:
读取"Session 11 - exercise 2 - "的第六页;
读取"Session 11 - exercise 2 - "的第⼆页;
发送⼀封邮件,将两个pdf⽂件附上,将之前读取的内容作为邮件的正⽂。
2) 思路:
第⼀个pdf⽂件是native pdf,即⽂本可选取,所以可以使⽤Read PDF Text活动读取。将Range参数设置为6,创建⼀个变量
installationPDFText存储读取的内容。
第⼆个pdf⽂件是扫描版的pdf,即所有内容都是图像,⽆法选取任何元素,所以需要使⽤Read PDF with OCR活动读取。将Range参
数设置为2,创建⼀个变量invoicePDFText。
添加⼀个Send Outlook Mail Messages活动,设置好To和Subject参数。在Body参数中填⼊installationPDFText + invoicePDFText。
*本课使⽤过的新活动、⽅法、函数等:
Get POP3 Mail Messages活动
Get IMAP Mail Messages活动
Get Exchange Mail Messages活动
Get Outlook Mail Messages活动
Save Attachments活动
Send SMTP Mail Messages活动
Send Outlook Mail Messages活动
Send Exchange Mail Messages活动
Take Screenshot活动
Save Image活动
ns("xxx"):邮件标题中是否包含xxx,mail是⼀个MailMessage型变量。
ng:邮箱中邮件的数量。
s("Date"):邮件的时间戳。


发布评论