【发布时间】:2019-01-26 11:54:23
【问题描述】:
我正在尝试编写一个需要发送电子邮件的 gjs 应用程序。 我发现这样做的方法是使用 spawn_async_with_pipes() 来调用邮件。 该应用程序似乎生成了邮件,我没有收到错误消息,但我没有得到任何有用的输出,也没有收到测试电子邮件...
我在这方面已经有一段时间了,几乎没有发现任何有用的最新文档。我正在使用 gtk3 和 gjs(以及 glib)。我还尝试生成一个 shell 脚本,该脚本反过来调用邮件。这导致“无法解析主机”错误和死信队列。所以我知道我正在产生我的命令。我并不担心“无法解析主机命令”,而是因为我无法通过直接生成邮件来获取它。
我正在生成这样的邮件:
const [res, pid, in_fd, out_fd, err_fd] =
await GLib.spawn_async_with_pipes(null,
['mail',
'-V',
`-s "${msgObj.subBlock}"`,
`-r ${to}`,
`-S smtp=${HOST}`,
'-S smtp-use-starttls',
'-S smtp-auth=login',
`-S smtp-auth-user=${USER}`,
`-S smtp-auth-password=${PASS}`,
FROM
], null, GLib.SpawnFlags.SEARCH_PATH, null);
const in_reader = new Gio.DataOutputStream({
base_stream: new Gio.UnixOutputStream({fd: in_fd})
});
var feedRes = in_reader.put_string(msgObj.msgBlock, null);
const out_reader = new Gio.DataInputStream({
base_stream: new Gio.UnixInputStream({fd: out_fd})
});
const err_reader = new Gio.DataInputStream({
base_stream: new Gio.UnixInputStream({fd: err_fd})
});
var out = out_reader.read_until("", null);
var err = err_reader.read_until("", null);
print(` > out : "${out}"`);
print(` > res : "${res}"`);
print(` > feedRes : "${feedRes}"`);
print(` > err : "${err}"`);
错误是0,而res 只是true
我不知道输出应该是什么,但我没有收到可识别的错误,也没有发送电子邮件... 如何让我的应用程序发送电子邮件?生成邮件不是要走的路吗? 提前感谢您能给我的任何指示。
【问题讨论】: