我有一个经典的ASP页面列出了数据库中的一些属性,并且每个属性都有一个小的联系表单 - 使用户能够从与该属性关联的属性代理“请求回调”。
但是,无论我填写哪种表格 - 向代理发送的电子邮件始终包含页面上第一个属性的详细信息,而不是该人请求回调的属性。
这是我在列表页面上的代码(以及联系表单);
<%
Dim rspropertyresults
Dim rspropertyresults_numRows
Set rspropertyresults = Server.CreateObject("ADODB.Recordset")
rspropertyresults.ActiveConnection = MM_dbconn_STRING
rspropertyresults.Source = "SELECT * FROM VWTenantPropertiesResults ORDER BY ContentID DESC"
rspropertyresults.CursorType = 0
rspropertyresults.CursorLocation = 2
rspropertyresults.LockType = 1
rspropertyresults.Open()
rspropertyresults_numRows = 0
%>
<%
sys_message = ""
If (Request.Form("form_submit") <> "") Then
Response.Write("<h1>Form Submitted</h1>")
%><!--#include file="docallback.asp"--><%
End If %>
<body id="propertyresults">
<% If Not rspropertyresults.EOF Or Not rspropertyresults.BOF Then %>
<%
While ((RepeatProperties__numRows <> 0) AND (NOT rspropertyresults.EOF))
%>
<div class="propertydetails">
<ul>
<li class="price"><% If (rspropertyresults("ContentPrice")) <> "" Then %><%= FormatCurrency((rspropertyresults.Fields.Item("ContentPrice").Value), 2, -2, -2, -2) %> PCM<% End If ' price true %></li>
<li class="address"><%=varFullAddress%></li>
<% If (rspropertyresults.Fields.Item("ContentDetails").Value) <> "" AND (rspropertyresults.Fields.Item("ContentDetails").Value) <> "<p><br /></p>" Then %><li><%=StripHTML(rspropertyresults.Fields.Item("ContentDetails").Value)%></li><% End If ' details true %>
</ul>
</div>
<div class="propertyimage">
<a class="badge-callback" id="badge-callback<%=(rspropertyresults.Fields.Item("ContentID").Value)%>" title="Request Callback" href="#">Request Callback</a>
<div id="panel<%=(rspropertyresults.Fields.Item("ContentID").Value)%>">
<form action="default.asp" name="frmCallback" id="form_callback" method="post">
<fieldset>
<legend><h2>Request a callback</h2></legend>
<dl>
<dt><label id="name">Name</label></dt>
<dd><input id="form_input" type="text" name="txtName" /></dd>
<dt><label id="email_address">Email</label></dt>
<dd><input id="form_input" type="text" name="txtEmail" /></dd>
<dt><label id="telephone">Telephone</label></dt>
<dd><input id="form_input" type="text" name="txtTelephone" /></dd>
<input type="hidden" name="form_submit" value="submitted" />
<dt><input type="submit" value="Request a callback"></dt>
</dl>
</fieldset>
</form>
</div>
</div>
<%
RepeatProperties__index=RepeatProperties__index+1
RepeatProperties__numRows=RepeatProperties__numRows-1
rspropertyresults.MoveNext()
Wend
%>
我还有一个处理电子邮件发送的docallback.asp页面;
<%
fldName = replace(request.Form("fldName"),"'","")
fldTelephone = replace(request.Form("fldTelephone"),"'","")
fldEmail = replace(request.Form("fldEmail"),"'","")
mBody = "<html><style>body,p,td{font-family:arial;font-size:12px;}</style><body>"
mBody = mBody & "<p>A tenant has requested a call back for further information regarding the following property:</p>"
If (rspropertyresults.Fields.Item("ContentHouseNo").Value) <> "" Then
varFullAddress = (rspropertyresults.Fields.Item("ContentHouseNo").Value) & " "
End If
varFullAddress = varFullAddress & (rspropertyresults.Fields.Item("ContentStreet").Value)
If (rspropertyresults.Fields.Item("ContentStreet2").Value) <> "" Then
varFullAddress = varFullAddress & " " & (rspropertyresults.Fields.Item("ContentStreet2").Value)
End If
If (rspropertyresults.Fields.Item("ContentTown").Value) <> "" Then
varFullAddress = varFullAddress & " " & (rspropertyresults.Fields.Item("ContentTown").Value)
End If
If (rspropertyresults.Fields.Item("ContentArea").Value) <> "" Then
varFullAddress = varFullAddress & " " & (rspropertyresults.Fields.Item("ContentArea").Value)
End If
varFullAddress = varFullAddress & " " & (rspropertyresults.Fields.Item("ContentPostCode").Value)
mBody = mBody & "<p>" & varFullAddress & "</p>"
mBody = mBody & "<p>Their details are:</p>"
If request.Form("fldName") <> "" Then
mBody = mBody & "<p>Name: " & request.Form("fldName") & "<br/>"
End If
If request.Form("fldTelephone") <> "" Then
mBody = mBody & "Telephone: " & request.Form("fldTelephone") & "<br/>"
End If
If request.Form("fldEmail") <> "" Then
mBody = mBody & "Email: " & request.Form("fldEmail") & "</p>"
End If
mBody = mBody & "<p>" & "<strong>" & "http://www."& varSiteDomain & "</strong>" & "</p>"
mBody = mBody & "</body></html>"
strMSSchema = "http://schemas.microsoft.com/cdo/configuration/"
Set oCdoConfg = Server.CreateObject("CDO.Configuration")
oCdoConfg.Fields.Item(strMSSchema & "sendusing") = 1
oCdoConfg.Fields.Item(strMSSchema & "smtpserver") = ""
oCdoConfg.Fields.Item(strMSSchema & "sendusername") = ""
oCdoConfg.Fields.Item(strMSSchema & "sendpassword") = ""
oCdoConfg.Fields.Update
set oCdoMsg = server.createobject("CDO.Message")
oCdoMsg.to = ""
oCdoMsg.bcc = ""
oCdoMsg.from = ""
oCdoMsg.Subject = "A tenant has requested a callback about one of your properties"
oCdoMsg.HTMLbody = mBody
Set oCdoMsg.Configuration = oCdoConfg
oCdoMsg.send
set oCdoMsg = nothing
set oCdoConfg = nothing
response.Redirect("default.asp")
%>
我想知道是否有人能够发现电子邮件未在电子邮件中发送特定房产详情的原因?
为相当冗长的代码道歉。
谢谢。
答案 0 :(得分:1)
您似乎重复使用相同的结果集(rspropertyresults
)来显示属性和发送电子邮件。
由于此记录集不接受ContentID
作为参数(并且您无论如何都不发送),因此将使用记录集中第一条记录上的属性发送电子邮件。
在每个表单中添加一个隐藏的输入ContentID
,在此命令上创建一个额外的记录集:
SELECT *
FROM VWTenantPropertiesResults
WHERE ContentID = @ContentID
,打开它并使用它来检索属性的详细信息:
cmdEmail = Server.CreateObject("ADODB.Command")
rsEmail = Server.CreateObject("ADODB.Recordset")
With cmdEmail
.ActiveConnection = MM_dbconn_STRING
.CommandText = "SELECT * FROM VWTenantPropertiesResults WHERE ContentID = ?"
.CommandType = 1
.Parameters.Append .CreateParameter("@ContentID", 3, 1, , request.Form("ContentID"))
End With
rsEmail.Open cmdEmail
答案 1 :(得分:0)
我无法确定你从哪里得到“rspropertyresults”,似乎没有查询。您可能需要确保数据可能在初始页面上找到,存储并发送到doCallBack.asp页面(通过或类似的。
此外,您的输入框似乎在表单的两半上都没有相同的名称。也许有一些我缺少的东西,但我认为你想要使用像:
这样的东西fldName = replace(request.Form("txtName"),"'","")
fldTelephone = replace(request.Form("txtTelephone"),"'","")
fldEmail = replace(request.Form("txtEmail"),"'","")
答案 2 :(得分:0)
看起来你并没有将ContentID发布到表单中的docallback.asp页面,我猜你在docallback.asp页面上请求结果时也没有过滤它。这意味着您将始终获得第一个结果(而不是您想要的结果)。