Преобразование ASPX в ASP (сценарий электронной почты)? - PullRequest
1 голос
/ 15 сентября 2011

Я PHP Разработчик, и у меня нет никаких знаний о ASP. К сожалению, я здесь единственный разработчик, и у клиента было ASP (не ASP.NET) страницы, и они хотели получить форму "Связаться с нами".

Я искал в интернете, чтобы узнать, как обслуживать ASP файлы в Apache, и он указал мне на mod_aspdotnet. С моей стороны было так глупо думать, что ASP - это то же самое, что ASP.NET! Теперь ты видишь мою проблему? Я разработал рабочий ASP.NET почтовый скрипт. Файлы имели .aspx расширения, но на самом сайте были .asp расширения, они использовали ASP, а не ASP.NET!

Так что я хотел бы попросить о помощи. Это мой почтовый скрипт:

<%@ Page Language="VB" Debug="true" %>
<%@Import Namespace="System.Web.Mail" %>
<script language="vb" runat="server">

Sub Send2Mail (sender as Object, e as EventArgs)

    Dim objMail as New MailMessage()

    if Logo.HasFile Then
        Try
            Logo.SaveAs(Server.MapPath("uploads/") + Request.form("strName") + "_Logo_" + Logo.FileName)
            objMail.Attachments.Add(new MailAttachment(Server.MapPath("uploads/" + Request.form("strName") + "_Logo_" + Logo.FileName)))
        Catch ex As Exception
            msg.Text = "<b>The Logo could not be uploaded</b>. The following error occured: <i>" + ex.Message + "</i><br />"
            msg.Visible = true
        end try
    end if  

    if Image1.HasFile Then
        Try
            Image1.SaveAs(Server.MapPath("uploads/") + Request.form("strName") + "_Image1_" + Image1.FileName)
            objMail.Attachments.Add(new MailAttachment(Server.MapPath("uploads/" + Request.form("strName") + "_Image1_" + Image1.FileName)))
        Catch ex As Exception
            msg.Text = "Image 1 could not be uploaded. The following error occured: <i>" + ex.Message + "</i><br />"
            msg.Visible = true
        end try
    end if  

    if Image2.HasFile Then
        Try
            Image2.SaveAs(Server.MapPath("uploads/") + Request.form("strName") + "_Image2_" + Image2.FileName)
            objMail.Attachments.Add(new MailAttachment(Server.MapPath("uploads/" + Request.form("strName") + "_Image2_" + Image2.FileName)))
        Catch ex As Exception
            msg.Text = "Image 2 could not be uploaded. The following error occured: <i>" + ex.Message + "</i><br />"
            msg.Visible = true
        end try
    end if


    objMail.To = "example@example.com"
    objMail.From = """Us"" <do-not-reply@foo.com>"

    objMail.BodyFormat = MailFormat.Html
    objMail.Priority = MailPriority.Normal
    objMail.Subject = "Business Registration"

    objMail.Body = "<html><body style='font-family: Verdana'><table style='font-family: Verdana; font-size: 11px'>"
    objMail.Body += "<tr><td><b>Business Name:</b></td><td>" + Request.form("strName") + "</td></tr>"
    objMail.Body += "<tr><td><b>Opening Business Description:</b></td><td>" + Request.form("strOpenDesc") + "</td></tr>"
    objMail.Body += "<tr><td><b>Opening Hours:</b></td><td>" + Request.form("strHours") + "</td></tr>"
    objMail.Body += "<tr><td><b>Business Description:</b></td><td>" + Request.form("strBusDesc") + "</td></tr>"
    objMail.Body += "<tr><td><b>Servicing Area:</b></td><td>" + Request.form("strService") + "</td></tr>"
    objMail.Body += "<tr><td><b>Website Address:</b></td><td>" + Request.form("strWebsite") + "</td></tr>"
    objMail.Body += "<tr><td><b>Email Address:</b></td><td>" + Request.form("strEmail") + "</td></tr>"
    objMail.Body += "<tr><td><b>Telephone Number:</b></td><td>" + Request.form("strPhone") + "</td></tr>"
    objMail.Body += "<tr><td><b>Fax Number:</b></td><td>" + Request.form("strFax") + "</td></tr>"
    objMail.Body += "<tr><td><b>Mobile Phone Number:</b></td><td>" + Request.form("strMobile") + "</td></tr>"
    objMail.Body += "<tr><td><b>Suburb / Post Code:</b></td><td>" + Request.form("strPostCode") + "</td></tr>"
    objMail.Body += "<tr><td><b>Proprietor Name:</b></td><td>" + Request.form("strPropName") + "</td></tr>"
    objMail.Body += "<tr><td><br /></td></tr>"
    objMail.Body += "<tr><td><b>Image 1 Caption:</b></td><td>" + Request.form("strImage1Caption") + "</td></tr>"
    objMail.Body += "<tr><td><b>Image 2 Caption:</b></td><td>" + Request.form("strImage2Caption") + "</td></tr>"
    objMail.Body += "</table><body></html>"

    SmtpMail.SmtpServer = "localhost"

    Try
        SmtpMail.Send(objMail)
        strMessage.Visible = true
    Catch ex As Exception
        msg.Text = "<b>The message was not sent</b>. The following error occured: <i>" + ex.Message + "</i><br />"
        msg.Visible = true
    End Try

End Sub

Будет ли это работать в ASP как есть? Что мне нужно изменить, чтобы оно работало в ASP? Я также использую теги <asp:></asp:>. Будет ли это работать в ASP?

EDIT

Прошу прощения за путаницу того, какой сервер я использую для разработки и хост-сервер. Хост использует IIS. Я использую Apache, потому что я действительно разработчик PHP. Проблема с запуском ASP-страниц в Apache заключалась в том, что клиент не хочет предоставлять мне доступ к своему серверу. Они сказали мне, что я должен просто доставить файлы.

Ответы [ 2 ]

2 голосов
/ 15 сентября 2011

ASP и ASP.NET имеют общие имена по чисто маркетинговым причинам, но они в основном не связаны между собой технологиями, хотя последняя использует понятия (такие как независимая от языка структура) и даже некоторые имена методов (например, Server.MapPath).

В обоих ASP вы должны выбрать поддерживаемый язык программирования и кодировать свои скрипты с ним.Ваш пример кода, кажется, использует VisualBasic, который не был поддержан классическим ASP.Вам придется переключиться на (например) VBScript .В отличие от VisualBasic, VBScript имеет свободную типизацию, но кроме этого он имеет похожий синтаксис.

Классическим способом ASP для отправки электронной почты является библиотека CDONTS .Простой пример:

<%

set mailer = CreateObject("CDONTS.NewMail")
mailer.from = "foo@example.com"
mailer.to = "bar@example.com"
mailer.subject = "Test e-mail message"
mailer.body = "This is the message body."
mailer.send
set mailer = nothing

%>

В общем, классический ASP очень похож на PHP: вы встраиваете код в HTML-документы.

Сложная часть - обработка загрузки файлов.В ASP не было встроенной функции загрузки файлов: вам пришлось купить и установить бинарную коммерческую библиотеку или найти один из фрагментов кода только для VBScript, доступных в Интернете.

Редактировать: Ваш клиент действительно запускает ASP через Apache?Microsoft поддерживает только IIS.Модули Apache для ASP обычно написаны сторонними разработчиками и часто реализуют разные языки, такие как Perl.

1 голос
/ 15 сентября 2011

ASP (или Classic ASP, как теперь известно) и ASP.NET - разные звери. Первый - это язык сценариев, похожий на PHP, в то время как ASP.NET использует .NET Framework и компилируется в двоичный файл MSIL либо перед запуском и загрузкой в ​​виде сборки .NET, либо на лету IIS, если страница содержит встроенный скрипт в любом случае они запускаются CLR (общеязыковой средой исполнения), которая образует основную часть .NET Framework.

Хотя некоторый код VB.NET можно преобразовать обратно в VBScript (наиболее часто используемый язык Classic ASP), все, что использует какую-либо часть платформы .NET вне пространства имен Microsoft.VisualBasic, будет недоступно. Для доступа к такого рода функциям вам потребуется использовать сторонние компоненты ActiveX / COM.

Вы говорите, что хотите обслуживать сценарий ASP на Apache, потому что у вас нет доступа к серверу IIS или этот сайт уже работает на Apache? Насколько мне известно, единственный способ запустить Classic ASP на Apache - это использовать ChilliSoft / SunOne ASP для Apache. Некоторые хостинговые компании предлагают это, но это устаревший продукт.

Если на нем запущен ChilliSoft ASP, существует почтовый компонент, который можно установить, если на хосте установлен SpicePack. Посмотрите на это для получения дополнительной информации:

http://developers.sun.com/asp/howto/chilimail.html

http://ns7.webmasters.com/caspdoc/pdf/chilisoft_asp_docs.pdf

Я перенес множество приложений ASP из IIS в Apache, используя ChilliSoft ASP, и в целом он работает очень хорошо.

Посмотрите на этот ответ, чтобы узнать, как отправить электронную почту с помощью ASP: Отправка почтового кода в ASP

В противном случае просто добавьте себе страницу для отправки почты в PHP и получите контактную форму для POST на эту страницу, а затем перенаправьте обратно на страницу ASP, если хотите, чтобы она выглядела без шва.

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