当电子邮件附带包含5个数字字符串的正文时,我想用URL替换它以创建指向该记录的可点击链接。请参阅以下代码:
我有两个问题。
使用下面的代码,我只会在每封进来的电子邮件中替换一个字符串。所以,如果我有一套4个五个数字的ID,那么只有一个会被转换进入超链接。
该脚本似乎破坏了传入电子邮件的所有格式。理想情况下,我想要更改的是将5号字符串转换为超链接,其余格式应保持不变,零换行符或回车符等...
Option Explicit
Sub InsertHyperLink(MyMail As MailItem)
Dim body As String, re As Object, match As Variant, slgLink As String
body = MyMail.body
slgLink = "http://lnet/servicelog/serviceLogInfo.jsf?slNumber="
Set re = CreateObject("vbscript.regexp")
re.Pattern = "[0-9][0-9][0-9][0-9][0-9]"
For Each match In re.Execute(body)
body = Replace(body, match.Value, "<p><a href=" & Chr(34) & slgLink & Right(match.Value, 5) & Chr(34) & ">" & Right(match.Value, 5) & "</a></p>", 1, -1, vbTextCompare)
Next
MyMail.HTMLBody = body
MyMail.Save
End Sub
答案 0 :(得分:0)
您正在阅读纯文本Body属性,但您正在设置HTMLBody。请改为阅读HTMLBody。
答案 1 :(得分:0)
在\u\pmo86的帮助下找到解决方案,这里有正确的方法(更优雅):
Sub InsertHyperLink(MyMail As MailItem)
Dim slgLink As String, re As Object
slgLink = "<a href=""http://lnet/servicelog/serviceLogInfo.jsf?slNumber=$1"">$1</a>"
Set re = CreateObject("vbscript.regexp")
re.Pattern = "(\b(\d{5})\b)"
re.Global = True
MyMail.HTMLbody = re.Replace(MyMail.HTMLbody, slgLink)
MyMail.Save
Set re = Nothing
End Sub
正如您在示例中所看到的,它使用内置函数来反向引用$ 1,它直接引用匹配。