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

Populating an email with data from IBM i (AS400) screen

我正在尝试从 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

根据以上内容,生成的电子邮件主题行仅包含第一个单词到第一个 space。根据我的发现,这是一个解析问题,并且发现以下行应该 有帮助。

polNo = Chr(34) + Replace(polNo,chr(34),chr(34)&chr(34))

上面一行将所有文本放在引号中(我知道这一点是因为我的 SendKeys 行现在显示的 GetText 结果开头有一个 "。

问题是当我到达 mailto 行时 Outlook 弹出 window 说:

"The command line argument is not valid. Verify the switch you are using."

我的最终结果将是一封包含主题和正文的电子邮件,其中的文本来自屏幕的各个部分。

已解决:感谢下面的dmc,他让我走上了正确的路线。

但是,解决方案不是使用 Chr(34),而是使用像这样简单的东西:

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

尽管它看起来可能不像,但您正在构建一个 URL。因此,URL 的内容必须进行 URL 编码。某些字符不能包含在 URL 中,包括 space。这些字符用百分号表示,后跟字符的十六进制 ASCII 代码。例如,space 更改为 %20

请参阅下面的 link,了解将 URL 编码和解码字符串的 VBScript 例程。 http://www.justskins.com/forums/wsh-equivalent-of-server-38778.html

编辑:虽然这通常称为 URL 编码,但您正在构建的东西在技术上是一个 URI。 Wikipedia has a good page that explains further.