devxlogo

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
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist