How to Send Email to SMTP Server (VB6)

Simple mail transfer protocol (SMTP) is the email protocol for sending information. We can use this ability to email from our data logged from the PLC. Faults or errors the PLC detects can be emailed to individuals for correction. Shift reports on productivity can be automatically emailed to recipients.

Google is removing “Less Secured Apps” in the mail app. (Gmail). If you are using this to send email from your controller, you must enable 2-step verification. This will allow you to generate an “App Password” for your controller or program.
Gmail Less Secure App Access – App Passwords

Send Email to SMTP Server

We will use visual basic 6 (VB6) to email the SMTP Google Gmail server. Using this method, we can use HTML code to format our messages. Attachments can also be added to the email message. In this example, I have added the ACC icon file.

Add Microsoft CDO for Windows 2000 Library

The first step is to add a reference to Microsoft CDO for Windows 2000 Library.  Project -> References CDO References SMTP Email

Make a simple form:
Form SMTP Email
This will have one command button on it labeled “Send Mail”

The code for the command button will be as follows:
Private Sub Command1_Click()

Call SendEmail
End Sub

Add the following Sub SendEmail code to the project :
‘Sample code used to send emails from any SMPT server using CDO in Visual Basic 6.0.

‘Added a reference to the project by navigating to Project -> references and adding Microsoft CDO for windows 2000 Library.
Sub SendEmail()
On Error Resume Next ‘ Set up error checking
Set cdoMsg = CreateObject(“CDO.Message”)
Set cdoConf = CreateObject(“CDO.Configuration”)
Set cdoFields = cdoConf.Fields
‘ Send one copy with Google SMTP server (with authentication)
schema = “”
cdoFields.Item(schema & “sendusing”) = 2
cdoFields.Item(schema & “smtpserver”) = “”
cdoFields.Item(schema & “smtpserverport”) = 465
cdoFields.Item(schema & “smtpauthenticate”) = 1
cdoFields.Item(schema & “sendusername”) = “”
cdoFields.Item(schema & “sendpassword”) = “password”
cdoFields.Item(schema & “smtpusessl”) = 1
With cdoMsg
    .To = “”
    .From = “”
    .Subject = “Send email to Gmail”
    ‘ Body of the message can be any HTML code
    .HTMLBody = “Test message using CDO in vb6 to Gmail smtp”
    ‘ Add any attachments to the message
    .AddAttachment “c:\AccDo.ico”
    Set.Configuration = cdoConf
    ‘ Send the message
End With
‘Check for errors and display message
If Err.Number = 0 Then
      MsgBox “Email Send Successfully,” “Email”
      MsgBox “Email Error” & Err.Number, “Email”
End If
Set cdoMsg = Nothing
Set cdoConf = Nothing
Set cdoFields = Nothing
End Sub

Running the Program Send Email to SMTP Server

When you run the program, you will get one of the following messages depending on whether the email was correctly sent.

SMTP Email Send Successfully SMTP Email Error

Here is the message that arrives at the recipient:
Gmail Messaging

A simple mail transfer protocol is an easy way to share information from the PLC data collected.
You can download the following VB6 sample code here.

Watch on YouTube: How to Send Email to SMTP Server

If you have any questions or need further information, please get in touch with me.
Thank you,

If you’re like most of my readers, you’re committed to learning about technology. Numbering systems used in PLCs are not challenging to learn and understand. We will walk through the numbering systems used in PLCs. This includes Bits, Decimals, Hexadecimal, ASCII, and Floating Points.

To get this free article, subscribe to my free email newsletter.

Use the information to inform other people how numbering systems work. Sign up now.

The ‘Robust Data Logging for Free’ eBook is also available as a free download. The link is included when you subscribe to ACC Automation.

5 thoughts on “How to Send Email to SMTP Server (VB6)”

  1. Thanks, it was that I needed because I was trying to write a software to send a email with HTML but I couldn’t until now. Thank you very much.

  2. Hi…Thanks for this code.
    Does it need changes to work wit Access VBA?
    I’ve tried it and I am getting the same error code on a non-successful send.

  3. Hi … Thank you for this helpful code..I used the code in my project inside solidworks vba (3D design program-it has the library you sugest) but its doesn’t recognise the cdo fields resulting in errors “cdoMsg variable not defined” etc. Any idea ?
    Kind regards


Leave a Comment