0

我写了一个小红宝石脚本,让我通过调用它和一些命令行参数来发送电子邮件。

在命令行中,这有效:

ruby.exe mail_it.rb fromaddr="mailaddr1@gmail.com" tolist="mailaddr2@yahoo.com"

但尽我所能,我无法让它在 Delphi 2007 for Win32 中工作。这是最新的尝试:

procedure TForm1.Button1Click(Sender: TObject);
var
  params: string;
begin
  params:= 'mail_it.rb fromaddr="mailaddr1@gmail.com" tolist="mailaddr2@yahoo.com"';
  caption:= IntToStr(ShellExecute(Form1.Handle, nil, PChar('ruby.exe'), PChar(params), nil, SW_SHOW));
end;

我尝试在 ShellExecute 中使用“open”作为第二个参数,但它没有帮助。ShellExecute 本身返回 42,据我在其他网站上发现的内容,这意味着“没有错误”。

4

2 回答 2

1

试试这个:

shellexecute(0, 'open', '<PUT YOUR PATH HERE>\mail_it.rb', fromaddr="mailaddr1@gmail.com" tolist="mailaddr2@yahoo.com"' , nil, SW_NORMAL);

我没有安装 ruby​​,但这适用于我使用编辑器启动 .pas 文件。只要您将 ruby​​.exe 与 .rb 文件关联,它就可以工作。

-大学教师

于 2009-10-19T23:31:51.573 回答
0

这是有效的最小代码:

procedure TForm1.Button1Click(Sender: TObject);
var
  params: string;
begin
    shellexecute(0, nil, 'mail_it.rb', 
                 'fromaddr="mailaddr1@gmail.com" tolist="mailaddr2@yahoo.com"', 
                  nil, SW_NORMAL);
end;

我不需要mail_it.rb 的完整路径,也不需要'open',但我确实需要'.rb'。

于 2009-10-20T02:03:30.677 回答