Я пытаюсь написать приложение gjs, которому нужно отправлять электронные письма. Я нашел способ сделать это с помощью spawn_async_with_pipes() для вызова почты. Приложение, кажется, порождает почту, и я не получаю сообщения об ошибке, но я не получаю никакого полезного вывода и не получаю тестовые электронные письма...
Я занимался этим некоторое время и нашел мало полезной актуальной документации. Я работаю с gtk3 и gjs (и glib). Я также попытался создать сценарий оболочки, который, в свою очередь, вызывает почту. Это привело к ошибкам «не удалось разрешить хост» и очереди недоставленных сообщений. Итак, я знаю, что порождаю свою команду. Меня беспокоит не «не удалось разрешить команду хоста», а тот факт, что я не могу получить ее, отправив почту напрямую.
Я рассылаю почту следующим образом:
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
Я не знаю, что должно быть на выходе, но я не получаю распознаваемой ошибки, и электронная почта не доставляется... Как я могу заставить свое приложение отправлять электронные письма? Разве рассылка почты не выход? Заранее спасибо за любые подсказки, которые вы можете мне дать.