技术文档 | 帮助文档 | 常用下载 | 新闻动态 |
心蓝邮箱助手BHMailer HTTP API接口说明 加入时间: 2021/11/25 17:51:05 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
新版接口说明,请移步到 >>>https://docs.bhdata.com/bhmailer/http-api-doc.html 心蓝邮件助手远程HTTP API接口使用HTTP通讯,参数名称全部为小写。采用UTF-8编码,使用HTTPS访问。通过HTTP API请求可实现获取及添加邮箱,查收邮件,截取邮件内容中的关键字等便捷功能。 心蓝邮箱助手客户端: 打开登录后,点击左上角文件-插件管理-HTTP API插件菜单中勾选启用HTTP API接口,请勿关闭软件。 (如未安装请先下载)
API请求地址(第三方软件开发者首选,请根据邮件助手登录的授权服务器选择相应的地址):
请求方式:GET API测试页面:https://www.bhdata.com/app/bhmailer.aspx(模拟点击及手机用户使用。建议点击软件击左上角文件-插件管理-HTTP API插件-API测试页面进入该网址。) 返回结果为JSON格式文本,其中code为0时表示执行成功,执行成功时msg或data标示执行结果。非0时表示失败,msg表示相应的错误描述。 返回code值参照下表说明:
心蓝邮件助手远程HTTP API接口具有如下两种调用方式: A、简易直链调用方式 1、心蓝邮箱助手“邮件规则”中设置规则,用来定义目标唯一邮件,如邮件标题,发件人,邮件发送时间(默认10分钟内)等; 2、规则的动作选择“HTTP API”; 3、“截取字段”即自定义导出字段,参照下方自定义邮件导出规则,可支持多个字段; 4、选择对应的邮箱,右键-导出HTTP API链接-选择上一步中建立的规则名称; 5、导出的结果即为每个对应邮箱的专属HTTP API链接,访问后可以得到符合该规则的10分钟内的最新目标邮件关键字; 链接格式:xxxxxxx@mailxw.com----https://bsh.bhdata.com:30015/?mail=VyJlGQcmEY7kXurEfqvbDAOkobSmxFBZUpAnpoIMTjihfx4yB、高级定义调用方式 每个接口请求必须包含以下参数:
1、获取API基本信息 命令:getApiInfo 功能:返回Api的到期时间,每日最大请求次数和当前已用请求次数。 额外参数表: <无> 请求示例:https://bsh.bhdata.com:30015/bhmailer?uid=您的授权ID&sign=您的API Key&act=getApiInfo&t=1649780855934 正常返回结果:{"code":0,"data":{"uid":123456789,"endTime":"2022-11-23 23:48:36","maxTimes":10000,"times":3,"timesTime":"2021-11-26 00:38:07"}} 2、获取一个邮箱账号 命令:getAccount 功能:从已登录的心蓝邮件助手中按顺序获取一个邮箱地址,同时返回邮箱账号总数和当前序号 额外参数表:
请求示例:https://bsh.bhdata.com:30015/bhmailer?uid=您的授权ID&sign=您的API Key&act=getAccount&pass=0&t=1649778851581 正常返回结果:{"code":0,"data":{"email":"asdfasf@126.com","total":14,"no":2}} 3、请求检查新邮件 命令:checkMail 功能:指定从某个邮箱账号中获取满足指定条件的邮件,返回按截取规则截取到的邮件内容。 额外参数表:
请求示例:https://bsh.bhdata.com:30015/bhmailer?uid=您的授权ID&sign=您的API Key&act=checkMail&email=asdfasf@126.com&from=xxx@xxx.com&fields=$BODYTEXT-R|[0-9]{6}$&t=1649780119125 正常返回结果:exmode为0时返回{"code":0,"msg":"截取到的连续的6个数字"},exmode为1时返回{"code":0,"data":{"result":"截取到的连续的6个数字","id":"abcdefgxx"}} 异常返回结果:{"code":3,"msg":"sign error"} 如果code为5表示超时,可以后续尝试获取结果。 注:如果使用同一个邮箱测试,请求一次后务必在该邮箱上右键-删除所有邮件(仅本地),再右键-清空本地的删除标志以便可以再次请求获取新邮件。 特别提醒:如果没有指定sent参数,此命令仅搜索命令请求后软件收到的邮件,即请确保软件中没有收到目标邮件之前去请求API,以便请求后软件开始收邮件,有目标邮件就返回。 4、获取执行结果 命令:getResult 功能:当执行结果code的值为5时,表示在等待的时间内,动作还没有执行完成,需要稍后主动发起获取结果请求。 额外参数表:
请求示例:https://bsh.bhdata.com:30015/bhmailer?uid=您的授权ID&sign=您的API Key&act=getResult&id=xxxxx&t=1649780751911 正常返回结果:exmode为0时返回{"code":0,"msg":"这是结果"},exmode为1时返回{"code":0,"data":{"result":"这是结果","id":"abcdefgxx"}} 5、删除邮件 命令:delMail 功能:删除checkMail返回的邮件。 额外参数表:
请求示例:https://bsh.bhdata.com:30015/bhmailer?uid=您的授权ID&sign=您的API Key&act=delMail&email=xxxxxx&id=xxxxx&mode=1&t=1649780751911 正常返回结果:{"code":0,"msg":"Done"} 6、删除邮箱账号 命令:delAccount 功能:删除指定的邮箱账号。已收取的邮件将被同时删除(仅本地)。 额外参数表:
请求示例:https://bsh.bhdata.com:30015/bhmailer?uid=您的授权ID&sign=您的API Key&act=delAccount&email=xxxxxx&t=1649780751911 正常返回结果:{"code":0,"msg":"Done"} 附:自定义邮件导出内置字段 说明:自定义导出的内置字段以$标识符作为开头和结尾,在截取内容中会被替换为相应的内容,如$EMAIL$会被替换为邮箱。 支持的内置字段:
$ATTACHMENTS$: 邮件附件,格式为:附件1名称|附件1大小|附件2名称|附件2大小... $TEMPKEY#$: 临时关键字,#为序号,从1开始。如省略序号,则表示第1个关键字,即$TEMPKEY$等同于$TEMPKEY1$。 $DATE$: 当前日期,格式为yyyyMMdd,如20241101 $TIME$: 当前时间,格式为HHmmss,如130532 $SOURCE$:包含邮件头的邮件原始内容 $HEADER$:邮件头源代码 $BODYHTML$: 如果是纯文本格式则返回邮件内容,如果是HTML格式,返回HTML源代码中的BODY部分源代码 $BODY$:不包含邮件头的邮件内容源代码 $BODYTEXT$:邮件文本内容,如果是HTML格式将被转换为文本格式 $BODYCLEAR$: 邮件文本内容且去掉所有空白换行符号,如果是HTML格式将被转换为文本格式 $FILETEXT$: Pdf,Office文档等附件解析出来的纯文本内容,可用于提取附件。 $RNDFILE$: 随机文件路径。在程序的Data\Files目录中放置多个任意文件,程序将随机使用其中某个文件的路径。 $RNDLINE$: 随机文本行。在程序的Data目录中放一个名字为Lines.txt的文本文件,程序将随机读取里面的某一行。 $RNDCONTENT$: 随机内容。在程序的Data\Letters目录中放置多个*.txt文件,程序将随机使用其中某个文件的内容。 ${随机字符类型,随机个数起-随机个数止}$:生成指定类型和数量的随机字符串。如${A,3-16}$表示随机3到16个大写字母,${Aa#,6}$表示随机6位大小写字母和数字。
随机字符类型: 以上字段为常见的邮件的标准字段,直接调用即可导出。如需要提取特殊的关键字内容,请使用下面的几种方法。 1、从指定内容(参照上述内置字段)中按正则表达式提取符合的结果:
$TITLE-R|<正则表达式>$
举例: 2、从指定内容中按起始与结束关键字提取第一个符合的结果:
$TITLE|<START1>|<END1>|[START2]|[END2]|......|[STARTn]|[ENDn]$
举例: 如邮件内容为:"您的激活码为123456。",要提取的内容是123456,则字段定义为:$BODYTEXT|激活码为|。$ B、如果邮件内容为HTML格式,需要提取HTML中的字符,如提取HTML代码中的某个链接,则定义为:$BODY| href="|"$ C、如果要提取邮件标头中的Message-ID,则可以从源代码中提取,定义为: $SOURCE|Message-ID:|\n$ 3、从指定内容中按起始与结束关键字提取所有符合的结果:
$BODY-A|<START>|<END>$
举例: 其他说明: 1、推荐使用$BODYTEXT$,即HTML格式将被转换为文本格式再做提取。 2、<START>与<END>是一组起始和结尾关键字组合,可以有多个组合,即在第一组截取后再对第一组的截取结果进行第2组关键字截取,依次进行N次截取。 如:原始文本为"您的激活码为ABC-123456。",如果要提取"123456",则字段定义为"$BODY|您的激活码为|。|-|" 3、有三个常用的符号:\r表示回车,\n表示换行,\t表示制表符。实际应用中很多看到的换行是由回车+换行组成的,即使用\r\n来表示。 4、可以对截取结果进制编码或解码,只需要在字段名称前加编码类型即可。支持以下4种编/解码: URLENCODE,URLDECODE,HTMLENCODE,HTMLDECODE。 如需对发件人进行HTML编码,则使用$HTMLENCODE-FROM$。(从v275版本开始支持) 代码示例: C# Demo代码示例:Demo程序实现了每个接口的调用,可在自己的工程中直接使用。下载C# Demo程序 触动代码示例: tim = ts.ms() str = tim ---获取时间戳 触动 str = tostring(str) new = str:split(".") tim=new[1]---精确分割 local url = "https://bsh.bhdata.com:30015/bhmailer" status,header,content = http.get(url,{headers={},params={uid=用户ID,sign=apikey,act='checkMail',email=收件邮箱,title=邮件标题,from=发件邮箱,sent=-999999,fields='$BODYTEXT-R|[0-9]{6}$',t=tim} } ) 按键代码示例: Dim 邮箱名称 = "xxxxxx@yahoo.com" Dim 邮箱密码="xxxxxxxx" 邮箱_取指定邮箱最新验证码(授权ID,key,邮箱名称,邮箱密码) Function 邮箱_取指定邮箱最新验证码(授权ID,key,邮箱名称,邮箱密码) Dim 时间戳=time()*1000 Dim 请求网址="https://bsh.bhdata.com:30015/bhmailer?uid="&授权ID&"&sign="&key&"&act=checkMail&sent=-999999&exmode=1&email="&邮箱名称&"&pass="&邮箱密码&"&title=xxxxxxx&fields=$BODYCLEAR|验证码是:|($&t="&时间戳 Dim 发送请求 = URL.Get(请求网址, 60) TracePrint 发送请求 Dim 返回结果 = Encode.JsonToTable(发送请求) Dim code = 返回结果["code"] Dim msg= 返回结果["msg"] TracePrint code TracePrint msg If CInt(code) = 5 Then 请求网址= "https://bsh.bhdata.com:30015/bhmailer?uid="&授权ID&"&sign="&key&"&act=getResult&id="&msg&"&t="&时间 Dim 再次发送请求 = URL.Get(请求网址, 60) TracePrint 再次发送请求 End If End Function 易语言代码示例(需引用精易模块): .版本 2 .支持库 spec .程序集 程序集1 .子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行 .局部变量 请求网址, 文本型 .局部变量 授权ID, 文本型 .局部变量 APIKey, 文本型 .局部变量 API地址, 文本型 .局部变量 email, 文本型 .局部变量 局_返回, 文本型 .局部变量 json, 类_json .局部变量 code, 文本型 .局部变量 msg, 文本型 .局部变量 bool, 逻辑型 .局部变量 title, 文本型 .局部变量 from, 文本型 .局部变量 fields, 文本型 .局部变量 sent, 文本型 ' 1、基本信息 email = “xxxxxx@outlook.com” ' 要接收邮件的邮箱地址 授权ID = “123456789” ' 左上角文件-插件管理 HTTP API插件中查看 APIKey = “xxxxxxxxxxxxxxxxxx” ' 同上 API地址 = “https://bsh.bhdata.com:30015/bhmailer” ' 2、确定目标邮件 title = “xxxx xxx” ' 目标邮件的标题 from = “xxxxxxx@xxxx.com” ' 目标邮件的发件人 sent = “-180” ' 距离当前请求时间3分钟内发送的邮件 ' 3、定义需截取的返回字段 fields = “$TITLE-R|[0-9]{5,}$” ' 从邮件标题中截取返回连续5个以上数字 详见官网接口说明自定义邮件导出规则部分 请求网址 = API地址 + “?uid=” + 授权ID + “&sign=” + APIKey + “&act=checkMail&title=” + title + “&from=” + from + “&email=” + email + “&fields=” + fields + “&sent=” + sent + “&t=” + 时间_取现行时间戳 () ' 调试输出 (请求网址) 局_返回 = 到文本 (网页_访问_对象 (请求网址, 0, , , , , , , , , , 30)) 局_返回 = 编码_utf8到gb2312 (局_返回) ' 转码,不然乱码显示 bool = json.解析 (局_返回) .如果真 (bool) 调试输出 (局_返回) code = json.取通用属性 (“code”) msg = json.取通用属性 (“msg”) ' 调试输出 (code) ' 调试输出 (msg) .如果真结束 .判断循环首 (code = “5”) ' 当返回code 5时说明邮件还没接收完成,延时10秒后再次获取结果 延时 (10000) 请求网址 = API地址 + “?uid=” + 授权ID + “&sign=” + APIKey + “&act=getResult&id=” + msg + “&t=” + 时间_取现行时间戳 () 调试输出 (请求网址) 局_返回 = 到文本 (网页_访问_对象 (请求网址, 0, , , , , , , , , , 30)) 局_返回 = 编码_utf8到gb2312 (局_返回) ' 转码,不然乱码显示 bool = json.解析 (局_返回) .如果真 (bool) code = json.取通用属性 (“code”) msg = json.取通用属性 (“msg”) .如果真结束 .判断循环尾 () 调试输出 (code) 调试输出 (msg) 返回 (0) ' 可以根据您的需要返回任意数值 python代码示例: import requests import time # 修改为自己的基本信息 uid='xxxxxxxxx' #左上角文件-插件管理 HTTP API插件中查看 sign='xxxxxxxxxxxxxxxxxx' #同上 APIurl = 'https://bsh.bhdata.com:30015/bhmailer' # 修改为自己需求的目标邮件 title = 'security code' #目标邮件的标题 from1 = 'microsoft.com' #目标邮件的发件人 from不能用作python变量,所以用了任意如from1 fields = '$BODY|href="|"$' #从邮件HTML源代码中截取第一个链接 详见官网接口说明自定义邮件导出规则部分 # 定义函数无需修改 def checkMail(email,password): timestamp = round(time.time()*1000) # 13位时间戳 sent = timestamp - 60000 #指定邮件发送时间为当前请求时间减去60秒防止时差 # 发送GET请求 response = requests.get(APIurl+'?uid='+uid+'&sign='+sign+'&act=checkMail&email='+email+'&pass='+password+'&title='+title+'&from='+from1+'&sent='+str(sent)+'&fields='+fields+'&t='+str(timestamp)) # 获取接口返回的JSON数据 jsonlist = response.json() # 解析返回值 code = jsonlist["code"] msg = jsonlist["msg"] while code == 5: # print(jsonlist) time.sleep(15) response = requests.get(APIurl+'?uid='+uid+'&sign='+sign+'&act=getResult&id=' +msg+'&t='+str(timestamp)) # 获取接口返回的JSON数据 jsonlist = response.json() # 解析返回值 code=jsonlist["code"] msg=jsonlist["msg"] else: print(msg) # 调用函数 密码为空时则邮箱必须提前导入到心蓝助手里,带上密码则自动添加邮箱到心蓝里收信 checkMail('xxxxx@hotmail.com','') |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
上一篇: | BHMailer HTTP POST说明 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
下一篇: | 网站用户名密码忘记了怎么找回? |