Help needed with Mailto: command

  • Thread starter Angela 'Angel' Brown
  • Start date
A

Angela 'Angel' Brown

Can the mailto command use strings and variavbles from inside the word
document?
e.g.

have a block of text once in a document and reference this text in the
mailto: command so that many mailto: command can use the same bit of text and
then the full text be in the email (not just a link to the text in the
document.)

Thank You
 
K

Karl E. Peterson

Angela said:
Can the mailto command use strings and variavbles from inside the word
document?
e.g.

have a block of text once in a document and reference this text in the
mailto: command so that many mailto: command can use the same bit of
text and then the full text be in the email (not just a link to the
text in the document.)

Yep, it can be done, but there is a limit on the overall length. I want to say it's
around 2000 chars, but can't recall precisely. You build the mailto URL from your
strings/variables, something like this:

Private Sub PrepareEmail(ByVal AddrTo As String, ByVal AddrCc As String, ByVal
Subject As String, ByVal Body As String)
Dim Link As String
Link = "mailto:" & AddrTo & _
"?cc=" & AddrCc & _
"&subject=" & Subject & _
"&body=" & EscapeURL(Body)
Call OpenDoc(Link)
End Sub

The two helper functions there prepare the body text for use in a URL and actually
execute the link:

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA"
(ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal
lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Declare Function UrlEscape Lib "Shlwapi.dll" Alias "UrlEscapeA" (ByVal
pszURL As String, ByVal pszEscaped As String, ByRef pcchEscaped As Long, ByVal
dwFlags As Long) As Long

Private Const URL_DONT_ESCAPE_EXTRA_INFO As Long = &H2000000

Private Function EscapeURL(ByVal URL As String) As String
' Purpose: A thin wrapper for the URLEscape API function.
Dim EscTxt As String
Dim nLen As Long

' Create a maximum sized buffer.
nLen = Len(URL) * 3
EscTxt = Space$(nLen)

If UrlEscape(URL, EscTxt, nLen, URL_DONT_ESCAPE_EXTRA_INFO) = 0 Then
EscapeURL = Left$(EscTxt, nLen)
End If
End Function

Private Function OpenDoc(ByVal DocFile As String) As Long
Dim nRet As Long
' Actually uses the default verb if available, and "open" otherwise
nRet = ShellExecute(0&, vbNullString, DocFile, vbNullString, vbNullString,
vbNormalFocus)
Debug.Print "ShellExecute: "; nRet
OpenDoc = nRet
End Function

Later... Karl
 
C

Captain EO

Hi Karl

Wondering if you can help me.

I am using mailto in a URL. Basically I want the URL to open outlook --
this is working fine. However I want the email created to include my outlook
signature, but when I use mailto I get a blank email even though I have
signatures turned on. Any ideas on how I can get the signature into the email.

Thanks.
 
D

Doug Robbins - Word MVP

Here is one way of doing it, but it may require that you have two email
accounts set up in Outlook. In the Outlook message pane, there is a button
that allows you to select the account from which the message will be sent.
Changing the account inserts/changes the signature to the one that you have
set up for the account that is selected.

--
Hope this helps.

Please reply to the newsgroup unless you wish to avail yourself of my
services on a paid consulting basis.

Doug Robbins - Word MVP
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top