Как отправить электронное письмо из чистого JavaScript

avatar
Wernfried Domscheit
8 августа 2021 в 20:55
138
1
0

Можно ли отправить письмо из JavaScript?

Важное примечание. Мой JavaScript является скриптом MongoDB, поэтому он не внутри браузера/веб-страницы

Мой сервер MongoDB не имеет доступа к Интернету, только почтовый сервер mailhost. Таким образом, стандартное решение, такое как window.open('mailto:test@example.com') или SmtpJS.com, невозможно.

Оболочка Mongo может вызывать системный двоичный файл, например

run("sh", "-c", `echo "The message body" | mail -s "The Subject" recip@emailsite.com`);

Но, насколько мне известно, команда run предназначена только для внутренних целей и может быть удалена уже в текущей версии.

Источник
Ctznkane525
8 августа 2021 в 21:19
0

почему бы вам не создать еще один сервис, который отправляет почту и получает к ней доступ через HTTPS? это то, что javascript делает лучше всего... делая вызовы на отдых

Bergi
8 августа 2021 в 21:47
1

Нет, обычный JavaScript не может этого сделать, так как нет API для доступа к сети. Однако это не то, о чем вы на самом деле спрашиваете. Среда JavaScript mongodb (я полагаю, вы имеете в виду mongosh?) предоставляет сетевой API, и да, вы можете использовать его для отправки электронных писем на свой почтовый хост.

Wernfried Domscheit
9 августа 2021 в 06:03
0

@Bergi, я все еще использую устаревший mongo. У вас есть ссылка на сетевой API? Я не нахожу ни для mongo, ни для mongosh.

Wernfried Domscheit
9 августа 2021 в 06:05
0

@ Ctznkane525, как уже упоминалось, я не в среде браузера. Команды типа request = new XMLHttpRequest() или response = await fetch('http://localhost/mail-service.json') возвращают ошибку uncaught exception: ReferenceError: XMLHttpRequest is not defined

Bergi
9 августа 2021 в 08:32
0

@WernfriedDomscheit Разве документация по requireмодулям nodejs не применима и к старой оболочке mongo?

Wernfried Domscheit
9 августа 2021 в 12:48
0

require и многие другие API недоступны в устаревшей оболочке, новый mongosh выглядит лучше. Однако базовые методы, такие как XMLHttpRequest() или fetch, недоступны. Как я могу получить их, если они изначально не поддерживаются?

Bergi
9 августа 2021 в 12:59
1

@WernfriedDomscheit Эти «основные методы», которые вы упомянули, являются API браузера, и они все равно не помогут вам отправить электронную почту. Что вам нужно, так это голый сетевой сокет, или еще лучше просто пакет mail или nodemailer.

Wernfried Domscheit
9 августа 2021 в 13:20
0

@Bergi, да, именно это я и искал. «Новый» монгош по-прежнему ужасен и имеет много багов — посмотрим, как он будет работать.

Ответы (1)

avatar
Wernfried Domscheit
15 февраля 2022 в 14:43
0

Тем временем новый mongosh стал намного лучше. В версии 1.1.9 и новее явных багов я уже не нашел. Таким образом, вы можете использовать стандартные пакеты npm, например nodemailer

.