ASPX到ASP转换(电子邮件脚本)?

时间:2011-09-15 08:26:41

标签: asp.net apache email asp-classic

我是PHP开发人员,我对ASP一无所知。可悲的是,我是这里唯一的开发人员,客户有ASP(不是ASP.NET)页面,他们想要一个“联系我们”表格。

我搜索了互联网,了解如何在ASP中投放Apache文件,并将其指向mod_aspdotnet。我认为ASPASP.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吗?

修改

我很抱歉我正在使用什么服务器进行开发和主机服务器的混淆。主机正在使用IIS。我正在使用Apache,因为我真的是一名PHP开发人员。在Apache中运行ASP页面的问题是因为客户端不想让我访问他们的服务器。他们告诉我,我应该发送文件。

2 个答案:

答案 0 :(得分:2)

出于纯粹的营销原因,

ASPASP.NET共享名称,但它们基本上是不相关的技术,尽管后者重用概念(例如作为语言无关的框架)甚至一些方法名称(例如{ {1}})。

在两个ASP中,您必须选择支持的编程语言并使用它编写脚本代码。您的示例代码似乎使用VisualBasic,这是经典ASP不支持的。您必须切换到(例如)VBScript。与VisualBasic不同,VBScript是松散类型的,但除此之外它还有类似的语法。

发送电子邮件的经典ASP方式是CDONTS library。一个简单的例子:

Server.MapPath

通常,经典ASP与PHP非常相似:您在HTML文档中嵌入了代码。

困难的部分是文件上传处理。 ASP没有本机文件上传功能:您必须购买并安装二进制商业库,或者在Internet上找到一个仅限VBScript的代码段。

编辑:您的客户端是否真的通过Apache运行ASP? Microsoft仅支持IIS。用于ASP的Apache模块通常由第三方编写,并且通常实现不同的语言,如Perl。

答案 1 :(得分:1)

ASP(或现在已知的经典ASP)和ASP.NET是不同的野兽。第一种是类似于PHP的脚本语言,而ASP.NET使用.NET Framework,在运行和上传为.NET程序集之前编译为MSIL二进制文件,如果页面包含内联脚本,则由IIS动态编译无论哪种方式,它们都由CLR(公共语言运行库)运行,它构成了.NET框架的核心部分。

虽然某些VB.NET代码可以转换回VBScript(最常用的经典ASP语言),但任何使用Microsoft.VisualBasic命名空间之外的.NET框架的任何部分的内容都将无法使用。要访问此类功能,您需要使用第三方ActiveX / COM组件。

你说你想在Apache上提供ASP脚本,是因为你没有访问IIS服务器或者已经在Apache上运行的这个站点?据我所知,在Apache上运行Classic ASP的唯一方法是使用ChilliSoft / SunOne ASP for Apache。一些托管公司提供此服务,但它是一种传统产品。

如果它正在运行ChilliSoft ASP,那么如果主机安装了SpicePack,则可以安装一个邮件组件。请查看此信息以获取更多信息:

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

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

我使用ChilliSoft ASP将许多ASP应用程序从IIS移植到Apache,并且通常它运行良好。

有关如何使用ASP发送电子邮件的方法,请查看此答案:Sending Mail code in ASP

其他所有内容都失败了,只需添加一个页面,用PHP发送邮件,然后将联系表单发送到该页面的POST,然后如果希望它无缝显示,则重定向回ASP页面。