我是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
吗?
修改
我很抱歉我正在使用什么服务器进行开发和主机服务器的混淆。主机正在使用IIS。我正在使用Apache,因为我真的是一名PHP开发人员。在Apache中运行ASP页面的问题是因为客户端不想让我访问他们的服务器。他们告诉我,我应该发送文件。
答案 0 :(得分:2)
ASP
和ASP.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)
虽然某些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页面。