[英]asp email form - trying to insert leading space
我在網站上使用此腳本來收集訪問者的查詢表單信息。 我的一位客戶報告說,當他收到生成的電子郵件時,Outlook正在操縱該行:
email=myclient@myclientsdomain.com
...包括前綴“ email =“,就好像這是電子郵件的一部分一樣! (愚蠢的Outlook!)
我需要更改代碼,以便在電子郵件地址之前立即插入一個前導空格,使其看起來像這樣:
email= myclient@clientsdomain.com
這樣,當我的客戶單擊電子郵件以答復用戶時,將使用正確的電子郵件(在電子郵件的前面沒有前綴的電子郵件!)
總之,由於電子郵件和前綴之間沒有任何空格,因此在創建電子郵件鏈接時,Outlook會包括前綴。
我不是一個編碼員,廣泛的搜索使我失敗了。 我嘗試了很多建議,但我的表格似乎失敗或沒有修復。
<!--START CODE FOR SENDFORM.ASP -->
<%@ LANGUAGE="VBScript" %>
<%
Dim sFormTitle, sFormSender, sFormSubject, sFormDestination
'============================================
' You only need to change the details below!
'============================================
sFormTitle = "enquiries"
sFormSender = “myemail@mydomain.com"
sFormDomain = “mydomain.com"
sFormSubject = "Enquiry From Website."
sFormDestination = “me@mydomain.com"
'sFormDestination = “mail@mydomain.com"
'============================================
' And that's it!
'============================================
Dim sRawForm, aFormArray, sElement, sFormData
sRawForm = request.form
aFormArray = Split(sRawForm, "&")
for i = 0 to UBOUND(aFormArray)
sElement = Unescape(aFormArray(i))
sElement = Replace( sElement, "+", " " )
sFormData = sFormData & sElement & vbCrLf
next
%>
<%
Dim sRecipients, sBody, sSubject
sRecipients = Request.Form( sFormDestination )
sBody = sFormData
sSubject = sFormSubject
dim msg
set msg = Server.CreateOBject( "JMail.SMTPMail" )
msg.Logging = true
msg.silent = true
msg.Sender = sFormSender
msg.SenderName = sFormTitle
msg.AddRecipient sFormDestination
msg.Subject = sSubject
msg.Body = sBody
msg.ServerAddress = "IP GOES HERE - REMOVED IT FOR THIS POSTING"
if not msg.Execute then
Response.redirect "http://mydomain.co.uk/sorry.html"
else
Response.redirect "http://mydomain.co.uk/thanks.html"
end if
%>
<!--END CODE FOR SENDFORM.ASP -->
根據蘭吉特的建議進行以下編輯:
Lankymart-Outlooks看到文本字符串email=myclient@myclientsdomain.com在中間包含一個@符號,並將整個內容解釋為電子郵件地址-這樣,它使整個內容成為可單擊的電子郵件鏈接。 如果我的表單可以產生一個不間斷的空格,Outlook仍將創建該電子郵件鏈接,但不包含不需要的前綴。
我不能使用&nbsp-我不知道如何使用腳本自動插入它(這是我要的)。 也許您的意思是在我的html表單頁面上-這不會“傳遞”到已批量發送的電子郵件中。
方括號具有相同的問題-如果asp表單可以以某種方式自動為我插入它們,則電子郵件將到達,Outlook可能會正確顯示它們-使我的表單執行此操作是我需要知道的部分。 (我認為領先的空間可能會更好,因為這肯定會起作用)
還有其他想法嗎?
這很簡單,只需使用Replace()
來確定等號並添加 
(不間斷空格)。
sRawForm = Request.Form
aFormArray = Split(sRawForm, "&")
For i = 0 To UBound(aFormArray)
sElement = Unescape(aFormArray(i))
sElement = Replace(sElement, "=", " =")
sElement = Replace(sElement, "+", " " )
sFormData = sFormData & sElement & vbCrLf
Next
或者嘗試使用Replace()
的<
>
方法;
sRawForm = Request.Form
aFormArray = Split(sRawForm, "&")
For i = 0 To UBound(aFormArray)
sElement = Unescape(aFormArray(i))
sElement = Replace(sElement, "=", "=<") & ">"
sElement = Replace(sElement, "+", " " )
sFormData = sFormData & sElement & vbCrLf
Next
如果您只希望表單值而不輸出name=value
可以遍歷Request.Form
集合,例如;
Dim element
For Each element In Request.Form
sFormData = sFormData & element.Value & vbCrLf
Next
這將是我遍歷Request.Form
集合的首選方法,如果您想要鍵值對方法name=value
您仍然可以這樣做。
Dim element
For Each element In Request.Form
'Both and < > methods shown but < > preferred.
'sFormData = sFormData & element.Name & "= " & element.Value & vbCrLf
sFormData = sFormData & element.Name
'Only add < > if it's the email element.
If element.Name = "email" Then
sFormData = sFormData & "=<" & element.Value & ">" & vbCrLf
Else
sFormData = sFormData & "=" & element.Value & vbCrLf
End If
Next
sRawForm = request.form
aFormArray = Split(sRawForm, "&")
for i = 0 to UBOUND(aFormArray)
sElement = Unescape(aFormArray(i))
sElement = Replace( sElement, "+", " " )
sFormData = sFormData & sElement & vbCrLf
next
因為您遍歷Request.Form
集合而不是使用Split()
來構建Array並遍歷該數組,所以您不必再進行所有字符串清理,這就是使用For Each
方法的好處之一。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.