Как отправить электронное письмо с веб-страницы / веб-формы? - PullRequest
0 голосов
/ 05 декабря 2008

Какие методы доступны для отправки электронного письма через веб-страницу или через форму на веб-странице?

У меня есть некоторая справочная идея, что вы помещаете данные формы в скрипт, но я не знаю, что такое скрипт cgi (я бы хотел узнать, если это предложенный метод!) текущая практика.

Это просто для того, чтобы пользователи могли связаться с операторами. Похоже, что внутристраничная форма будет проще для пользователя, чем попросить его открыть свой почтовый клиент. Я также был обеспокоен тем, что боты собирают контактный адрес электронной почты (в случае ссылок mailto:).

Ответы [ 6 ]

4 голосов
/ 05 декабря 2008

Когда вы отправляете форму, данные в этой форме отправляются на серверный скрипт. Например, в PHP вы получаете доступ к этим данным с помощью массива $_POST, <input name=""> становится индексом массивов. Например ..

// <form action="mailer.php">[..]<input name="subject" [..]><input name="content" [..]></form>
echo("The subject is: ". $_POST['subject']);
echo("The content is:" . $_POST['content']);

На самом базовом уровне все, что вам нужно сделать, это использовать ваши языки программирования, встроенные в почтовую функцию. Опять же, в PHP это просто mail():

mail($to, $subject, $message);

Вы бы просто установили $to на свой адрес электронной почты ( не разрешите пользователю устанавливать это, или они могут отправлять почту как "вы", любому - "спам" .. ), $subject и $message будут установлены в виде $_POST[]

Прежде чем вы перейдете к какому-либо файлу HTML, который идет в сценарий с mail("me@example.com", $_POST['subject'], $_POST['content']);, подумайте, что произойдет, если кто-то перезагрузит эту страницу 200 раз. вероятно, капча и / или ограничение скорости.

Одна вещь, которая беспокоила меня раньше - помните, что «форма для связи с нами» - это , а не замена для предоставления фактического адреса электронной почты! Например, мой почтовый клиент хранит копию всей почты, которую я отправляю, и я могу прикреплять файлы, и писать в знакомом почтовом клиенте гораздо приятнее, чем в форме <textarea> (особенно когда я случайно нажал «назад» и форму решает очистить себя)!

1 голос
/ 05 декабря 2008

Для большинства систем unix / bsd / linux большинство языков предоставляют программную оболочку для команды Mail.

0 голосов
/ 05 декабря 2008

Отправка почты должна выполняться на стороне сервера - спецификация меняется в зависимости от языка на вашей стороне сервера, вашей операционной системы и доступа вашего сервера к SMTP-серверу.

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

0 голосов
/ 05 декабря 2008

Ну, вот что не нужно делать:

<a href="mailto:someperson@someaddress.com">Please spam me, kthx</a>

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

0 голосов
/ 05 декабря 2008

современных языков для веб-разработки обычно имеют библиотеки для отправки электронной почты. это зависит от того, какой язык вы используете, но вы найдете его в документации вашего языка. это довольно просто, библиотека внутри вашего языка обычно инкапсулирует и обеспечивает поведение «smtp client», которое вы используете. Вы отправляете почтовое сообщение отправителю и получателю, а также данные для подключения к SMTP-серверу.

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

0 голосов
/ 05 декабря 2008

Если вы используете ASP.NET 2.0, вы можете использовать пространство имен System.Net.Mail. Больше информации здесь

...