Hyperlinks is becoming non-clickable in RTFBody format

  • Thread starter Thread starter paresh
  • Start date Start date
P

paresh

Hi,

I have written one add-in which replaces [a-zA-z]#[0-9] or
[a-zA-z]#[0-9]#[0-9] with the hyperlinks. It is working fine(attached portion
of code). I found the two problems.

1. The hyperlink (in format of "http://mylink/Q/") is getting converted
into clickable link if I use objSafeMail.Body instead of objSafeMail.RTFBody
in my code but usage of objSafeMail.Body converts mail format to plain text.

2. If I use objSafeMail.RTFBody then hyperlink is becoming non-clickable.

Could any one suggest me if in Option#1 (while using objSafeMail.Body) it is
possible to persist email format as it is OR in Option#2 is it possible to
make replaced hyperlink to clickable,

Code:

Private Sub objMailItem_Send(Cancel As Boolean)
Const Link = "http://mylink/Q/"
Const REQUEST_PATTERN = "([a-zA-Z]+)(\#[0-9]+){1,2}(?!\#)\b"
Set oRE = CreateObject("VBScript.Regexp")
With oRE
.IgnoreCase = True
.Global = True
.MultiLine = True
.Pattern = REQUEST_PATTERN
End With
objMailItem.BodyFormat = olFormatHTML
objMailItem.Save
Dim objSafeMail As Redemption.SafeMailItem
Set objSafeMail = CreateObject("Redemption.SafeMailItem")
objSafeMail.Item = objMailItem
Set oMatches = oRE.Execute(objSafeMail.Body)
objSafeMail.RTFBody = oRE.Replace(objSafeMail.RTFBody, Link &
"$1/$&")
objSafeMail.Save

For Each omatch In oMatches
objSafeMail.RTFBody = Replace(objSafeMail.RTFBody, "/" &
omatch.SubMatches(0) & "#", "/")
objSafeMail.Save
Next
End Sub

Thanks.
 
Dmitry, I could see the complete expected contents. Suppose my email RTFbody
contains "This is a test#123." Then my Add-in converts it to "This is
http://mylink/Q/test/123." but the hyperlink is staying non-clickable. If I
do the same thing using email body (not RTFBody) then link get converted into
clickable link but format is getting changed to plain text. :-(

Thanks,
Paresh

Dmitry Streblechenko said:
And if you look at the RTF body, what exactly do you see?

--
Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
-
paresh said:
Hi,

I have written one add-in which replaces [a-zA-z]#[0-9] or
[a-zA-z]#[0-9]#[0-9] with the hyperlinks. It is working fine(attached
portion
of code). I found the two problems.

1. The hyperlink (in format of "http://mylink/Q/") is getting converted
into clickable link if I use objSafeMail.Body instead of
objSafeMail.RTFBody
in my code but usage of objSafeMail.Body converts mail format to plain
text.

2. If I use objSafeMail.RTFBody then hyperlink is becoming
non-clickable.

Could any one suggest me if in Option#1 (while using objSafeMail.Body) it
is
possible to persist email format as it is OR in Option#2 is it possible to
make replaced hyperlink to clickable,

Code:

Private Sub objMailItem_Send(Cancel As Boolean)
Const Link = "http://mylink/Q/"
Const REQUEST_PATTERN = "([a-zA-Z]+)(\#[0-9]+){1,2}(?!\#)\b"
Set oRE = CreateObject("VBScript.Regexp")
With oRE
.IgnoreCase = True
.Global = True
.MultiLine = True
.Pattern = REQUEST_PATTERN
End With
objMailItem.BodyFormat = olFormatHTML
objMailItem.Save
Dim objSafeMail As Redemption.SafeMailItem
Set objSafeMail = CreateObject("Redemption.SafeMailItem")
objSafeMail.Item = objMailItem
Set oMatches = oRE.Execute(objSafeMail.Body)
objSafeMail.RTFBody = oRE.Replace(objSafeMail.RTFBody, Link &
"$1/$&")
objSafeMail.Save

For Each omatch In oMatches
objSafeMail.RTFBody = Replace(objSafeMail.RTFBody, "/" &
omatch.SubMatches(0) & "#", "/")
objSafeMail.Save
Next
End Sub

Thanks.
 
Why do you expect it to become a hyperlink? You need to explicitly use the
appropriate RTF keywords to mark soem string as a hyperlink.

--
Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
-
paresh said:
Dmitry, I could see the complete expected contents. Suppose my email
RTFbody
contains "This is a test#123." Then my Add-in converts it to "This is
http://mylink/Q/test/123." but the hyperlink is staying non-clickable. If
I
do the same thing using email body (not RTFBody) then link get converted
into
clickable link but format is getting changed to plain text. :-(

Thanks,
Paresh

Dmitry Streblechenko said:
And if you look at the RTF body, what exactly do you see?

--
Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
-
paresh said:
Hi,

I have written one add-in which replaces [a-zA-z]#[0-9] or
[a-zA-z]#[0-9]#[0-9] with the hyperlinks. It is working fine(attached
portion
of code). I found the two problems.

1. The hyperlink (in format of "http://mylink/Q/") is getting
converted
into clickable link if I use objSafeMail.Body instead of
objSafeMail.RTFBody
in my code but usage of objSafeMail.Body converts mail format to plain
text.

2. If I use objSafeMail.RTFBody then hyperlink is becoming
non-clickable.

Could any one suggest me if in Option#1 (while using objSafeMail.Body)
it
is
possible to persist email format as it is OR in Option#2 is it possible
to
make replaced hyperlink to clickable,

Code:

Private Sub objMailItem_Send(Cancel As Boolean)
Const Link = "http://mylink/Q/"
Const REQUEST_PATTERN = "([a-zA-Z]+)(\#[0-9]+){1,2}(?!\#)\b"
Set oRE = CreateObject("VBScript.Regexp")
With oRE
.IgnoreCase = True
.Global = True
.MultiLine = True
.Pattern = REQUEST_PATTERN
End With
objMailItem.BodyFormat = olFormatHTML
objMailItem.Save
Dim objSafeMail As Redemption.SafeMailItem
Set objSafeMail = CreateObject("Redemption.SafeMailItem")
objSafeMail.Item = objMailItem
Set oMatches = oRE.Execute(objSafeMail.Body)
objSafeMail.RTFBody = oRE.Replace(objSafeMail.RTFBody, Link
&
"$1/$&")
objSafeMail.Save

For Each omatch In oMatches
objSafeMail.RTFBody = Replace(objSafeMail.RTFBody, "/" &
omatch.SubMatches(0) & "#", "/")
objSafeMail.Save
Next
End Sub

Thanks.
 
I thought it is link and as it getting coverted to clickable link while using
..Body so it should with .RTFBody as well. :-)

Could you tell me what are the RT Keywords and how could I use it to make it
clickable hyper link. Example would be much helpful.

Thanks,
Paresh

Dmitry Streblechenko said:
Why do you expect it to become a hyperlink? You need to explicitly use the
appropriate RTF keywords to mark soem string as a hyperlink.

--
Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
-
paresh said:
Dmitry, I could see the complete expected contents. Suppose my email
RTFbody
contains "This is a test#123." Then my Add-in converts it to "This is
http://mylink/Q/test/123." but the hyperlink is staying non-clickable. If
I
do the same thing using email body (not RTFBody) then link get converted
into
clickable link but format is getting changed to plain text. :-(

Thanks,
Paresh

Dmitry Streblechenko said:
And if you look at the RTF body, what exactly do you see?

--
Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
-
Hi,

I have written one add-in which replaces [a-zA-z]#[0-9] or
[a-zA-z]#[0-9]#[0-9] with the hyperlinks. It is working fine(attached
portion
of code). I found the two problems.

1. The hyperlink (in format of "http://mylink/Q/") is getting
converted
into clickable link if I use objSafeMail.Body instead of
objSafeMail.RTFBody
in my code but usage of objSafeMail.Body converts mail format to plain
text.

2. If I use objSafeMail.RTFBody then hyperlink is becoming
non-clickable.

Could any one suggest me if in Option#1 (while using objSafeMail.Body)
it
is
possible to persist email format as it is OR in Option#2 is it possible
to
make replaced hyperlink to clickable,

Code:

Private Sub objMailItem_Send(Cancel As Boolean)
Const Link = "http://mylink/Q/"
Const REQUEST_PATTERN = "([a-zA-Z]+)(\#[0-9]+){1,2}(?!\#)\b"
Set oRE = CreateObject("VBScript.Regexp")
With oRE
.IgnoreCase = True
.Global = True
.MultiLine = True
.Pattern = REQUEST_PATTERN
End With
objMailItem.BodyFormat = olFormatHTML
objMailItem.Save
Dim objSafeMail As Redemption.SafeMailItem
Set objSafeMail = CreateObject("Redemption.SafeMailItem")
objSafeMail.Item = objMailItem
Set oMatches = oRE.Execute(objSafeMail.Body)
objSafeMail.RTFBody = oRE.Replace(objSafeMail.RTFBody, Link
&
"$1/$&")
objSafeMail.Save

For Each omatch In oMatches
objSafeMail.RTFBody = Replace(objSafeMail.RTFBody, "/" &
omatch.SubMatches(0) & "#", "/")
objSafeMail.Save
Next
End Sub

Thanks.
 
I don't remember it of the top of my head, but it shoul be easy to create a
clickable link through the OUtlook UI and then just look at the RTF data.

--
Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
-
paresh said:
I thought it is link and as it getting coverted to clickable link while
using
.Body so it should with .RTFBody as well. :-)

Could you tell me what are the RT Keywords and how could I use it to make
it
clickable hyper link. Example would be much helpful.

Thanks,
Paresh

Dmitry Streblechenko said:
Why do you expect it to become a hyperlink? You need to explicitly use
the
appropriate RTF keywords to mark soem string as a hyperlink.

--
Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
-
paresh said:
Dmitry, I could see the complete expected contents. Suppose my email
RTFbody
contains "This is a test#123." Then my Add-in converts it to "This is
http://mylink/Q/test/123." but the hyperlink is staying non-clickable.
If
I
do the same thing using email body (not RTFBody) then link get
converted
into
clickable link but format is getting changed to plain text. :-(

Thanks,
Paresh

:

And if you look at the RTF body, what exactly do you see?

--
Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
-
Hi,

I have written one add-in which replaces [a-zA-z]#[0-9] or
[a-zA-z]#[0-9]#[0-9] with the hyperlinks. It is working
fine(attached
portion
of code). I found the two problems.

1. The hyperlink (in format of "http://mylink/Q/") is getting
converted
into clickable link if I use objSafeMail.Body instead of
objSafeMail.RTFBody
in my code but usage of objSafeMail.Body converts mail format to
plain
text.

2. If I use objSafeMail.RTFBody then hyperlink is becoming
non-clickable.

Could any one suggest me if in Option#1 (while using
objSafeMail.Body)
it
is
possible to persist email format as it is OR in Option#2 is it
possible
to
make replaced hyperlink to clickable,

Code:

Private Sub objMailItem_Send(Cancel As Boolean)
Const Link = "http://mylink/Q/"
Const REQUEST_PATTERN = "([a-zA-Z]+)(\#[0-9]+){1,2}(?!\#)\b"
Set oRE = CreateObject("VBScript.Regexp")
With oRE
.IgnoreCase = True
.Global = True
.MultiLine = True
.Pattern = REQUEST_PATTERN
End With
objMailItem.BodyFormat = olFormatHTML
objMailItem.Save
Dim objSafeMail As Redemption.SafeMailItem
Set objSafeMail = CreateObject("Redemption.SafeMailItem")
objSafeMail.Item = objMailItem
Set oMatches = oRE.Execute(objSafeMail.Body)
objSafeMail.RTFBody = oRE.Replace(objSafeMail.RTFBody,
Link
&
"$1/$&")
objSafeMail.Save

For Each omatch In oMatches
objSafeMail.RTFBody = Replace(objSafeMail.RTFBody,
"/" &
omatch.SubMatches(0) & "#", "/")
objSafeMail.Save
Next
End Sub

Thanks.
 
Back
Top