Опубликован: 24.12.2006 | Уровень: для всех | Доступ: платный

Урок 6: Отправка электронной почты с помощью веб-формы

< Урок 5 || Урок 6: 1234567 || Урок 7 >

Пересылка динамических значений формы

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

Вначале мне хотелось бы отметить всю сложность того, что предстоит сделать. В предыдущих уроках было рассказано о том, как получать и отправлять данные, используя различные способы –файлы cookie, формы, строки запроса и т.д. Говорилось и о том, как отображать динамический текст при помощи функций Response.Write() (ASP), <cfoutput> (ColdFusion) и echo (PHP). В этом уроке говорилось об объектах и, частично, о том, как объекты применяются серверной моделью для отправки электронного сообщения по протоколу SMTP. Сами по себе, пересылка данных между страницами и почтовые объекты никак не взаимодействуют.>

Но в последнем задании урока эти две несопоставимые вещи будут использованы вместе для создания особого механизма, не встроенного в ASP или ColdFusion. Создаваемое приложение является результатом сочетания различных инструментов и технологий (HTML, HTTP-запросов, а также объектов ASP, ColdFusion и PHP, отвечающих за передачу данных по каналу связи). В определенной степени, такой симбиоз является моделью всего процесса разработки динамичных веб-сайтов, – различные объекты и приемы употребляются совместно, чтобы пользователь мог свободно использовать инструменты для передачи информации и общения.

  1. Откройте файл messageSent.asp в режиме Code (Код).

    Режим Design (Дизайн) здесь бесполезен, поскольку код, который следует модифицировать, никак не отражается на странице.

  2. Найдите электронный адрес отправителя в коде сообщения и замените его соответствующей переменной формы, как показано ниже.

    При использовании ASP следует заменить электронный адрес на следующий код: Request.Form("emailAddress").

    В случае применения ColdFusion целесообразно заменить код from="yourname@yourserver.com" кодом from="#form.emailAddress#".

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

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

  3. Замените содержимое строки с указанием темы – subject и текст в теле сообщения – body на значения соответствующих переменных формы.

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

    Для ASP:

    <%
    theSchema=http://schemas.microsoft.com/cdo/configuration/
    Set cdoConfig=server.CreateObject("CDO.Configuration")
    cdoConfig.Fields.Item(theSchema & "sendusing") = 2
    cdoConfig.Fields.Item(theSchema & "smtpserver") = "your.SMTP.server.com"
    cdoConfig.Fields.Update
    set cdoMessage=Server.CreateObject("CDO.Message")
    cdoMessage.Configuration=cdoConfig
    cdoMessage.From=Request.Form("emailAddress")
    cdoMessage.To="yourname@yourserver.com"
    cdoMessage.Subject=Request.Form("subject") 
    cdoMessage.TextBody=Request.Form("body") 
    cdoMessage.Send
    Set cdoMessage=Nothing
    Set cdoConfig=Nothing
    %>

    Для ColdFusion:

    <cfmail from="#form.emailAddress#" to="yourname@yourserver.com" fisubject="#form.subject#">
    #form.body#
    </cfmail>

    Для PHP:

    <?
    mail('yourname@yourserver.com', $_POST['subject'], $_POST['body']);
    ?>
  4. Сохраните страницу, загрузите ее на сервер и протестируйте работу приложения. Для этого заполните форму, а затем нажмите кнопку Submit и проверьте электронную корреспонденцию.

    Если вместо указанной в форме темы сообщения отображается тема form.subject или вместо введенного текста отображается текст form.body, то это означает, что вокруг динамических переменных не удалены кавычки (ASP и PHP) или не добавлены знаки # # (ColdFusion).

< Урок 5 || Урок 6: 1234567 || Урок 7 >
Екатерина Мезенцева
Екатерина Мезенцева
Россия
Маргарита Туктарова
Маргарита Туктарова
Соединенное Королевство, London, kingston university, 2012