在经典ASP中使用CDO.Message中的RegEx

时间:2014-09-08 16:05:59

标签: regex vbscript asp-classic cdo.message

我正在使用ASP VB中的CDO.Message对象,我正在尝试使用VB正则表达式处理我的表单字段(textarea)文本,然后将其作为(非HTML)电子邮件发送。

我要做的是过滤掉没有前一个句号的任何\ r或\ n(或组合)。但是,正则表达式中没有一个在电子邮件的文本中有效,尽管我已经在在线Regex测试器中测试了代码,并且它运行良好。

但是,我可以在字符串中添加chr(13),并在电子邮件中显示。

如果可能,我宁愿不使用HTML。有人会对Regex无效的原因提出任何建议吗? 感谢

以下是正则表达式:

<%strGoals = Request.Form("Goals")
                        Set regEx = New RegExp
                        regEx.Global = True
                        regEx.IgnoreCase = True
                        regEx.Pattern = "(([^\.])(\r\n|\r|\n)+)"


                        set matches = regEx.Execute(strGoals) 
                        If matches.Count > 0 Then
                        For Each Match in matches 
                        varGoalsResults = matches.item(0).submatches(0)
                        Response.write("<div style=""background-color:#f00;"">"&varGoalsResults&"</div>")
                        Next
                        Else
                        response.write("no matches")
                        End If

                        strGoals = Trim(regEx.Replace(strGoals, "$2"))

         strBody = strBody & "Goals: " & chr(13) & Request.Form("Goals") & chr(13) & chr(13)
%>

<!--#include virtual="SendEmail.asp"-->

以下是SendEmail.asp的代码:

<%
Set ObjMail = CreateObject("CDO.MESSAGE") 

ObjMail.From = strFrom

ObjMail.To = strTo

ObjMail.Cc = strCc

ObjMail.Subject = strSubject

'ObjMail.BodyPart.ContentMediaType = "multipart/alternative"

If strFormat = "HTML" Then
    strHTMLStart = "<html><head><style type=""text/css"">body {font-family:Arial, Helvetica, sans-serif;}</style></head><body>"
    strHTMLEnd = "</html></body>"
    ObjMail.HtmlBody = strHTMLStart & strBody & strHTMLEnd
Else
    ObjMail.TextBody = strBody
End If




ObjMail.Send 

Set ObjMail=nothing
%>

1 个答案:

答案 0 :(得分:1)

尝试regEx.Global = False它应该有效。