簡體   English   中英

ASP電子郵件表單-嘗試插入前導空格

[英]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()來確定等號並添加&nbsp (不間斷空格)。

sRawForm = Request.Form
aFormArray = Split(sRawForm, "&")
For i = 0 To UBound(aFormArray)
  sElement = Unescape(aFormArray(i))
  sElement = Replace(sElement, "=", "&nbsp;=")
  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 &nbsp; and < > methods shown but < > preferred.
  'sFormData = sFormData & element.Name & "=&nbsp;" & 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM