在RPA實(shí)施中况增,郵件的自動(dòng)化是必不可少的一部分內(nèi)容遵岩。通過(guò)郵件,可以實(shí)現(xiàn)人與機(jī)器人之間的信息互通巡通。
一尘执、發(fā)送郵件的方式類型
有關(guān)發(fā)送郵件,有多種多樣的方式宴凉。在開(kāi)始之前誊锭,先了解一下在AA中發(fā)送郵件都有哪些實(shí)現(xiàn)方式。
1. 模擬人工操作
作為RPA本質(zhì)的一種方式就是模擬人的操作弥锄,所以可以通過(guò)AA打開(kāi)郵箱丧靡,創(chuàng)建郵件,編寫郵件內(nèi)容籽暇,添加附件等一系列操作來(lái)完成温治,此方法中,主要使用到AA的Object Clone命令戒悠,腳本如下截圖熬荆。
缺點(diǎn): 此方法執(zhí)行效率低,易出錯(cuò)绸狐,針對(duì)于不同版本的outlook或其他郵件客戶端卤恳,需要適配并修改代碼累盗。
2. 自帶Command
在AA中也有相應(yīng)的Command,如 "Send Email"突琳,此命令是通過(guò)SMTP發(fā)送郵件若债,需要在客戶端中配置SMTP服務(wù)器,這里使用163郵箱進(jìn)行示例拆融,配置如下:打開(kāi)AAE客戶端蠢琳,點(diǎn)擊Tools->Options->Email settings
腳本如下:
結(jié)果:
缺點(diǎn):
- 命令中的的Message類型有兩種方式,一種純文本格式镜豹,一種是富文本格式挪凑,所以不能使用HTML的方式來(lái)發(fā)送消息,這種就不能實(shí)現(xiàn)客戶定制化內(nèi)容的需求逛艰。
- Message中傳入?yún)?shù)躏碳,郵件內(nèi)容只能以文本格式顯示,不能顯示帶格式的內(nèi)容散怖。
3. 利用好BotStore
在Automation Anywhere的Bot應(yīng)用商店中菇绵,有很多封裝好的Task/Metabots,如下圖镇眷,可以通過(guò)搜索找到自己想要的Bots咬最。
4. 其他方式
除了以上幾種方式,可以使用其他語(yǔ)言來(lái)實(shí)現(xiàn)郵件發(fā)送的功能欠动。如用C#編寫永乌,然后打包成dll,之后在Metabot中進(jìn)行方法的調(diào)用具伍;或者使用VBS腳本翅雏,可以用腳本調(diào)用outlook發(fā)送,或者使用windows自帶的CDO.Message對(duì)象來(lái)發(fā)送人芽。
二望几、使用VBS發(fā)送SMTP郵件
1. 起因
- 客戶要求不能使用dll,所以不能使用C#實(shí)現(xiàn)(C#發(fā)送郵件的功能已經(jīng)實(shí)現(xiàn)萤厅,代碼可以在知識(shí)星球中下載橄抹,鏈接:https://t.zsxq.com/zjUZr7i)
- 模擬人手工操作,執(zhí)行效率比較低惕味,易出錯(cuò)
- JavaScript實(shí)現(xiàn)發(fā)送郵件楼誓,需要用到外部的引用,也不方便調(diào)試名挥,并且在AA中調(diào)用的時(shí)候會(huì)出現(xiàn)各種奇葩問(wèn)題
- Botstore中也都是基于C#開(kāi)發(fā)疟羹,封裝成dll的形式,所以也不能使用。
所以最終采用了使用VBS調(diào)用windows自帶的CDO.Message對(duì)象來(lái)發(fā)送SMTP郵件阁猜,這樣可以脫離outlook組件或者相關(guān)dll,也不需要其他外部的依賴蹋艺,只要是windows系統(tǒng)都可以直接進(jìn)行調(diào)試剃袍。
調(diào)試VBS方法:打開(kāi)cmd,運(yùn)行wscript C:\RPA\SendSMTPEmail.vbs進(jìn)行調(diào)試
2. 思路及代碼說(shuō)明
AA中調(diào)用VBS腳本捎谨,在傳入?yún)?shù)時(shí)候民效,如果參數(shù)的值中存在空格,則會(huì)出現(xiàn)傳參錯(cuò)誤的異常(因?yàn)镽un Script命令傳參是以空格作為分隔符的)涛救,也可以參考知識(shí)星球中<AA中調(diào)用VBS畏邢、JS代碼>這篇文章。所以在使用VBS腳本發(fā)送郵件時(shí)检吆,需要使用AA腳本動(dòng)態(tài)生成VBS腳本文件舒萎,然后發(fā)送郵件。
首先編寫并調(diào)試VBS腳本蹭沛,腳本代碼如下:
'##### 調(diào)試方法:打開(kāi)cmd臂寝,運(yùn)行C:\Users\liw>wscript C:\RPA\SendSMTPEmail.vbs進(jìn)行調(diào)試,此方法可以查看在哪一行中的哪個(gè)字符出現(xiàn)問(wèn)題 #####
'##### 需要將文件保存為ANSI格式編碼摊灭,否在郵件中的中文會(huì)以亂碼顯示 ####
'##### 功能:使用CDO.Message發(fā)送郵件 #####
'##### Send Email With SMTP ####
Dim Mail,fso,schema,isHtml,arrAttachment
schema = "http://schemas.microsoft.com/cdo/configuration/"
Set Args=WScript.Arguments
Wscript.Stdout.Writeline Args(0)
Set Mail = CreateObject("CDO.Message")
Set fso = CreateObject("Scripting.FileSystemObject")
With Mail
.Configuration(schema & "smtpauthenticate")=1
.Configuration(schema &"sendusing")=2
'設(shè)置SMTP服務(wù)器
.Configuration(schema &"smtpserver")="smtp.163.com"
'設(shè)置SMTP服務(wù)器端口
.Configuration(schema &"smtpserverport")=25
'設(shè)置發(fā)件人郵箱
.Configuration(schema &"sendusername")="x@163.com"
'設(shè)置發(fā)件人郵箱密碼
.Configuration(schema &"sendpassword")="qqqq"
'設(shè)置SMTP服務(wù)器端口
.Configuration(schema &"smtpusessl")=True
.Configuration(schema &"sendlanguagecode")="utf-8"
.Configuration.Fields.Update
End With
'設(shè)置發(fā)件箱
Mail.From="x@163.com"
'設(shè)置收件人'
Mail.To="x@qq.com"
Mail.Subject="RPA Test 測(cè)試郵件"
' 郵件內(nèi)容設(shè)置 郵件類型(text/html)text文本格式/html網(wǎng)頁(yè)格式
isHtml=TRUE
If isHtml Then
Mail.HtmlBody=Args(0)
Mail.HTMLBodyPart.Charset = "utf-8"
Else
Mail.TextBody=Args(0)
Mail.BodyPart.Charset = "utf-8"
End If
'Mail.BodyPart.Fields.Item("urn:schemas:mailheader:content-transfer-encoding") = "base64"
'Mail.BodyPart.Fields.Update
'添加所有附件咆贬,參數(shù)為附件列表數(shù)組,單個(gè)文件可使用 arrPath = Split( strPath & "|", "|")傳入路徑帚呼。
arrAttachment="C:\LogonUI.log|C:\ScrubRetValFile.txt|C:\aaa_TouchMeNo_.txt"
If Not IsArray( arrAttachment ) Then arrAttachment = Split( arrAttachment & "|", "|")
For i = 0 To UBound( arrAttachment )
If fso.FileExists( arrAttachment(i) ) = True Then
Mail.Addattachment arrAttachment(i)
End If
Next
'Mail.AddAttachment("C:\LogonUI.log")
'Mail.AddAttachment("C:\ScrubRetValFile.txt")
'Mail.Fields.Update
Mail.Send
Set Mail=Nothing
Set Args=Nothing
在完成VBS代碼調(diào)試之后掏缎,需要將其中的一些變量替換掉,之后編寫AA腳本煤杀,在AA腳本中眷蜈,需要將上面的VBS代碼通過(guò)Log To File的命令寫入到臨時(shí)的文件中,然后使用Run Script命令執(zhí)行臨時(shí)的VBS腳本沈自。(文件可以在知識(shí)星球中下載端蛆,鏈接:https://t.zsxq.com/E2rrFu7)
3. AA參數(shù)說(shuō)明
在Metabot中的參數(shù)有如下:
參數(shù)名稱 | 方向 | 說(shuō)明 |
---|---|---|
in_Attachments | 入?yún)?/td> | 郵件附件,以豎線分割 |
in_Body | 入?yún)?/td> | 郵件正文內(nèi)容 |
in_Cc | 入?yún)?/td> | 抄送人地址酥泛,使用";"分割 |
in_isHtml | 入?yún)?/td> | 正文內(nèi)容是否是HTML格式(True/False) |
in_Subject | 入?yún)?/td> | 郵件主題 |
in_To | 入?yún)?/td> | 收件人地址今豆,使用";"分割 |
out_Result | 出參 | 發(fā)送郵件的結(jié)果(True/False) |
vMailServer | None | 郵件服務(wù)器地址 |
vMailServerPort | None | 郵件服務(wù)器端口 |
vPassword | None | 發(fā)件人郵箱密碼 |
vFrom | None | 發(fā)件人郵箱地址 |
vScriptFile | None | VBS文件名稱 |
vScriptFolder | None | VBS文件存放路徑 |
vSendSMTPEmailTemp | None | VBS文件臨時(shí)存放的路徑 |
四、總結(jié)
在AA中發(fā)送郵件的方式多種多樣柔袁,用戶可以依據(jù)自己的實(shí)際情況呆躲,選擇合適的方法以提高開(kāi)發(fā)效率和機(jī)器人的執(zhí)行效率。在選擇使用VBS/JavaScript腳本方式執(zhí)行函數(shù)或者功能時(shí)捶索,可以通過(guò)動(dòng)態(tài)生成腳本的方式來(lái)避免一些傳參的異常插掂。
文中涉及到的代碼都可以在知識(shí)星球中下載,鏈接:https://t.zsxq.com/E2rrFu7