Fast Way to Create and Send Email

Fast Way to Create and Send Email

An easy way to create and send email in VB (or any other language) is to use the “mailto:” protocol that already works on client computers. The technique makes a request to the installed email client, and works with Outlook, Lotus Notes, and other registered email clients.

You can’t use the standard VB Shell function; instead, you call the Windows ShellExecute API to send email.

Put this code in a module called Module1.bas:

Public Declare Function ShellExecute Lib "shell32" _   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   'Constants for ShowWindow (nCmdShow)   Public Const SW_HIDDEN As Long = 0   Public Const SW_NORMAL As Long = 1   Public Const SW_MINIMIZED As Long = 2   Public Const SW_MAXIMIZED As Long = 3   Public Const SW_NOTACTIVE As Long = 4   Public Const SW_UNHIDDEN As Long = 5   Public Const SW_MINWITHFOCUS As Long = 6   Public Const SW_MINNOTACTIVE As Long = 7   Public Const SW_RESTORE As Long = 9

You’ll need a form to enter an email address. Open the default Form1.frm, in design mode, and place three Textboxes and a Command Button on the form. Then add this code to handle the control events:

Private Sub Command1_Click()   Dim Email As String   Email = "mailto:" & Text1.Text _      & "?subject=" & Text2.Text _      & "&body=" & MailTo_StringConverter(Text3.Text)   ShellExecute Me.hwnd, vbNullString, _      Email, vbNullString, vbNullString, SW_MAXIMIZEDEnd SubPrivate Function MailTo_StringConverter(Text As String) As String   Dim CharIndex As Integer   Dim CharLength As Integer   Dim ASCIIcode As Integer       MailTo_StringConverter = Text   'easy tecnique to speed up For cicle!!   CharLength = Len(MailTo_StringConverter)       For CharIndex = CharLength To 1 Step -1      ASCIIcode = Asc(Mid$(MailTo_StringConverter, CharIndex, 1))      If (ASCIIcode < vbKey0 Or ASCIIcode > vbKey9) _         And (ASCIIcode < vbKeyA Or ASCIIcode > vbKeyZ) _         And (ASCIIcode < vbKeyA + 32 Or ASCIIcode > vbKeyZ + 32) Then         ' replace punctuation chars with "%hex"         MailTo_StringConverter = Left$( _            MailTo_StringConverter, CharIndex - 1) _            & "%" & ASCIIcode2HexChar(ASCIIcode) _            & Mid$(MailTo_StringConverter, CharIndex + 1)      End If   NextEnd FunctionPrivate Function ASCIIcode2HexChar(ASCIIcode As Integer) As String    If ASCIIcode < 16 Then        'need leading zero to complete 2 bytes !!!        ASCIIcode2HexChar = "0" & Hex$(ASCIIcode)    Else 'all ok, Hex$ returned string has 2 bytes        ASCIIcode2HexChar = Hex$(ASCIIcode)    End IfEnd Function
Share the Post:
data observability

Data Observability Explained

Data is the lifeblood of any successful business, as it is the driving force behind critical decision-making, insight generation, and strategic development. However, due to its intricate nature, ensuring the

Heading photo, Metadata.

What is Metadata?

What is metadata? Well, It’s an odd concept to wrap your head around. Metadata is essentially the secondary layer of data that tracks details about the “regular” data. The regular