Vbscript 使用来自IBM i(AS400)屏幕的数据填充电子邮件

Vbscript 使用来自IBM i(AS400)屏幕的数据填充电子邮件,vbscript,outlook,ibm-midrange,mailto,Vbscript,Outlook,Ibm Midrange,Mailto,我试图从AS400屏幕上抓取数据,并用这些数据填充电子邮件,但似乎遇到了我正在努力克服的问题。以下是我目前掌握的一部分: Dim polNo polNo = GetText(10,18,10) Dim wsh Set wsh=CreateObject("WScript.Shell") subSub1_() sub subSub1_() // Just doing this to check the text I have SendKeys(polNo) // Sent the eMail

我试图从AS400屏幕上抓取数据,并用这些数据填充电子邮件,但似乎遇到了我正在努力克服的问题。以下是我目前掌握的一部分:

Dim polNo
polNo = GetText(10,18,10)

Dim wsh
Set wsh=CreateObject("WScript.Shell")

subSub1_()
sub subSub1_()

// Just doing this to check the text I have
SendKeys(polNo)

// Sent the eMail with the text
wsh.Run "mailto:testing@somemailbox.com?Subject=" & polNo

end sub
根据上述内容,生成的电子邮件主题行仅包含第一个单词和第一个空格。从我发现的情况来看,这是一个解析问题&我发现下面这行应该会有所帮助

上面的一行将所有文本都放在引号中(我知道这一点,因为我的SendKeys行现在显示的GetText结果在开始处带有一个“)

问题是当我到达邮件收件人行时,Outlook弹出一个窗口,上面写着:

“命令行参数无效。请验证正在使用的开关。”

我的最终结果将是一封有主题的电子邮件&一封正文,其中的文本取自屏幕的各个部分

解决了:多亏了下面的dmc,他让我开始了正确的路线

然而,解决方案不是使用Chr(34),而是使用以下简单的方法:

polNo = Replace(polNo," ","20%")

虽然看起来可能不一样,但您正在构造URL。因此,该URL的内容必须是URL编码的。某些字符不能包含在URL中,包括空格。这些字符用百分号表示,后跟十六进制字符的ASCII码。例如,空格改为
%20

有关将URL编码和解码字符串的VBScript例程,请参见下面的链接。


编辑:虽然这通常被称为URL编码,但从技术上讲,您正在构建的东西是一个URI。

谢谢您的回复。我尝试了几种您的建议组合,得到了与上面相同的结果。要么是一个只包含第一个单词的主题/主体,要么是Outlook错误消息。我使用了:polNo=Chr(34)+Replace(polNo,Chr(34),polNo和“20%”,polNo=Replace(polNo,Chr(34),polNo和“%20”)以及许多其他组合。请尝试
polNo=Replace(polNo,”,“%20”)
。这将用
%20
常量替换空格。如果polNo中有任何其他字符无法放入URL,您也需要替换这些字符。例如,如果您确实希望有双引号字符,也可以这样做:
polNo=replace(polNo,Chr(34),“%22”)
polNo = Replace(polNo," ","20%")