rpa: uibot
需求场景是:客户内网smtp服务器发送邮件,正文需要添加图片。
使用uibot发送smtp邮件,uibot对于smtp虽然支持,但是不完善。只能发送普通的html格式的文本内容,不能把图片直接添加到正文内。所以采用第三方语言处理
1. 客户提供的smtp服务器,首先要验证权限是否正确。
使用windows自带的telnat Client进行验证
查看另一个博客:《telnet 验证邮箱服务器》https://blog.csdn.net/weixin_41632423/article/details/120266328
2.vba 使用cdo组件发送smtp服务器、
选择cdo:因为是windows自带组件,无需安装。
vba发送smtp邮件,依托于微软第三方服务连接我们要使用的smtp服务器,所以用这个方式时要确认网络是否能访问,具体url见代码。
邮件正文添加图片,大部分的思路都是使用cid(可以自行百度这种方式),但是vba不适用,所以在这里的方案是,将图片用base64 编码,将encode的结果发送到目标邮箱,outlook邮箱是可以自动decode的,其他邮件没有尝试,有兴趣的同事可以自己试试。
话不多说,上干货
1.发送邮件
'使用CDO发送邮件
Public Function fSendEMailCDO(strTo As String, strSubject As String, strBody As String, Optional strAttachment As String = "", Optional strCC As String = "", Optional strBCC As String = "") As Object
Dim CDOMail As Variant
Dim strUser, strPwd As String
On Error Resume Next '出错后继续执行
Application.DisplayAlerts = False '禁用系统提示
strUser = "225xxxxx14@qq.com" '请填写您的邮箱地址
strPwd = "wu*****veaag" '申请开通的授权码
If strTo = "" Then MsgBox "请输入收件人地址~"
If strSubject = "" Then MsgBox "请输入主题~"
If strBody = "" Then MsgBox "请输入正文内容~"
Set CDOMail = CreateObject("CDO.Message") '创建对象
CDOMail.From = strUser