отправка электронной почты из HTML с использованием JavaScript без внешнего вида по умолчанию - PullRequest
0 голосов
/ 04 октября 2011

Я хочу отправить электронное письмо с использованием JavaScript без использования внешнего вида. Я не хочу использовать mailto объект, который использует outlook для отправки электронной почты.

Существует ли прямой способ, предоставляемый JavaScript, для отправки данных, представленных в форме, на адрес электронной почты.

Ответы [ 7 ]

5 голосов
/ 04 октября 2011

Любопытное.По крайней мере, у вас есть возможность сделать следующее:

С помощью JavaScript вы можете позвонить в серверную службу, которая может отправлять электронную почту по SMTP. Вызов осуществляется посредством простой отправки формы на ваш собственный сервер или через XmlHttpRequest для удаленной службы, зависит только от того, а) будете ли вы реализовывать ее самостоятельно, и б) сможете ли вы найти службу в другом месте.

tl; dr:

  • JavaScript Сам не может отправлять электронные письма
  • Однако вы можете сделать JavaScript вызов сервис, способный «разговаривать» по SMTP.
4 голосов
/ 04 октября 2011

Это будет некоторая работа, но я думаю, что с Websockets вы можете заставить это работать.

Затем вам нужно будет реализовать протокол SMTP самостоятельно:

http://www.smtp2go.com/articles/smtp-protocol.html

Вот учебник по веб-сокетам:

http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/

Вы можете прочитать спецификацию веб-сокетов для получения более подробной информации:

http://dev.w3.org/html5/websockets/#the-websocket-interface

Итак, теоретически вы должны быть в состоянии сделать это, но в соответствии со спецификацией SMTP обычно блокируется от веб-сокетов:

Если порт - это порт, к которому настроен пользовательский агентчтобы заблокировать доступ, затем выдать исключение SecurityError.(Пользовательские агенты обычно блокируют доступ к известным портам, таким как SMTP.)

Но, как правило, это блокируется, не всегда или требуется, поэтому это может сработать, и это единственный способ, которым я могусм. javascript для отправки писем.

3 голосов
/ 04 октября 2011

номер

Такая функция будет представлять угрозу безопасности, так как ее могут легко использовать спаммеры. Чтобы напрямую отправить электронное письмо, не открывая экземпляр почтового клиента пользователя по умолчанию, вы должны передать данные на сервер, который отправит электронное письмо.

1 голос
/ 04 октября 2011

НЕТ! JavaScript не может отправить форму по электронной почте! но есть альтернатива для отправки данных формы на адрес электронной почты.

JavaScript не предоставляет прямой метод отправки данных, представленных в форме, на адрес электронной почты.

Основная проблема, связанная с отсутствием функции «Форма электронной почты JavaScript», - это безопасность. Предположим, в JavaScript есть функция для отправки электронной почты. Некоторые злоумышленники могут написать скрипт для отправки электронной почты на какой-либо адрес сразу же, когда вы посещаете их страницу. Это откроет ваш адрес электронной почты третьим лицам без вашего ведома. Они начнут заполнять ваш почтовый ящик большим количеством спам-сообщений!

1 голос
/ 04 октября 2011

Открытая почтовая программа зависит от настроек по умолчанию на отдельном клиентском компьютере.

Чтобы отправить электронное письмо, не касаясь почтовой программы, такой как Outlook, Thunderbird и т. Д., Вам нужно использовать какой-либо язык на стороне сервера, такой как PHP, и это очень легко сделать, так как существует множество ресурсы, чтобы вы могли достичь того, что вы хотите.

1 голос
/ 04 октября 2011

Я действительно надеюсь, что нет способа сделать это с помощью кода на стороне клиента, потому что я действительно не хочу, чтобы какая-то случайная веб-страница использовала мой компьютер для отправки электронных писем без моего ведома.

И, сказав это, я уверен, что ответ "нет" в любом случае.

Смысл «mailto» в том, что он открывает почтовую программу пользователя по умолчанию (не обязательно Outlook), чтобы они знали, что отправляют электронную почту, и могут редактировать все поля перед продолжением (при условии, что они вообще хотят продолжить) .

Самое близкое, о чем я могу подумать, это то, что ваш JavaScript совершит Ajax-вызов на ваш веб-сервер, а затем отправит электронное письмо с вашего серверного кода.

1 голос
/ 04 октября 2011

Я думаю, что вам следует написать бэкэнд-программу, которая принимает адрес электронной почты и содержимое электронной почты, а затем отправляет письмоЗатем вы можете отправить форму на сервер с помощью Ajax в браузере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...