Question:
Hi all,
The following is the complete source for a function I've written to send SMTP and HTTP email via the latest ChilKat ActiveX component. This code works perfectly for GMain and Yahoo, but does not work for Hotmail.
These are the mailman parameters I set for GMail:
rmQMain.mailman.SmtpHost = smtp.gmail.com frmQMain.mailman.SmtpUsername = "vitalida71" frmQMain.mailman.SmtpPassword = "****" ' Redacted frmQMain.mailman.SmtpSsl = 1 frmQMain.email.FromAddress = "vitalida71@gmail.com" frmQMain.email.fromName = "David Vitali"
Can anyone tell me what the correct setting should be for Hotmail? I've tried everything. The code I'm using is below as attachment 1. Attachment 2 (further down) is the debug log generated by the Chlkat email library.
Attachment 1: Code used to send email (complete function)
Public Function SMTPSendEmail(ByVal frmCaller As Form, _
ByVal dtaConfig As Data, _
ByRef ToList As String, _
ByRef CCList As String, _
ByRef Subject As String, _
ByRef Message As String, _
ByRef AttachmentList As String, _
ByVal crystReport As CrystalReport, _
ByVal tmrTimer As Timer, _
Optional ByRef sbStatus As StatusBar) As Boolean
Dim CancelFlag As Boolean ' Operation cancelled flag
Dim DelimitedStrings() As String ' Array of strings with delimiters (',') removed
Dim ErrorString As String ' Error string
Dim NumberOfAttachments As Integer ' Number of files attached
Dim Body As String ' Email body
Dim i As Integer ' Object index
Dim f As frmEmailErrorDetails ' For display of error logs
Dim RS As Recordset ' Config recordset
Dim IsRetrySend As Boolean ' TRUE retry of the send process, FALSE otherwise
Dim success As Long ' Return code
' Register error handler
On Error GoTo ErrorHandler
' General initialisations
Set RS = Nothing
Set frmPassword = Nothing
Set frmQMain.GlobalProgressBar = Nothing
frmQMain.ProcessMailManEvents = False
SMTPSendEmail = False
' Load the password entry form. The user enters the email password once per session
Call Load(frmPassword)
' Get the protocol parameter values from the Config table
Set RS = frmQMain.ConfigDB.OpenRecordset("Config", dbOpenTable)
With RS
frmQMain.Protocol = .Fields("Protocol").Value
frmQMain.UserName = .Fields("UserName").Value
frmQMain.EmailAddress = .Fields("EmailAddress").Value
frmQMain.DisplayName = .Fields("DisplayName").Value
frmQMain.ServerName = .Fields("ServerName").Value
frmQMain.PortNumber = .Fields("PortNumber").Value
frmQMain.UseSSL = .Fields("UseSSL").Value
End With
' Check if the protocol parameters have been set
If (frmQMain.Protocol = "") Then GoTo SetEmailDetailsExit
If (frmQMain.UserName = "") Then GoTo SetEmailDetailsExit
If (frmQMain.EmailAddress = "") Then GoTo SetEmailDetailsExit
If (frmQMain.DisplayName = "") Then GoTo SetEmailDetailsExit
If (frmQMain.ServerName = "") Then GoTo SetEmailDetailsExit
If (frmQMain.PortNumber = "") Then GoTo SetEmailDetailsExit
' Prompt for password if none was present
If (frmQMain.Password = "") Then
Call frmPassword.Show(vbModal)
If (Not frmPassword.Cancelled) Then
' Password is now set
frmQMain.Password = frmPassword.Password()
Else
GoTo CommonExit
End If
End If
' Parameterize and display the Email details entry form to allow the user to specify target
' address, CCs, subject, message and attachments
Call frmEmailDetails.SetInterfaceData("", "", Subject, Message, AttachmentList)
Call frmEmailDetails.Show(vbModal)
' Retrieve data from Email details entry form
Call frmEmailDetails.GetInterfaceData(CancelFlag, ToList, CCList, Subject, Message, AttachmentList)
Call Unload(frmEmailDetails)
' Check if user cancelled the operation
If (Not CancelFlag) Then
ErrorString = "Setup progress indicator"
' Setup the email process status bar
Set frmQMain.GlobalProgressBar = New frmProgress
Call Load(frmQMain.GlobalProgressBar)
Call frmQMain.GlobalProgressBar.Initialise(mdiQuoteEd)
frmQMain.GlobalProgressBar.ProgressStopEnable = True
frmQMain.GlobalProgressBar.ProgressCloseEnable = False
frmQMain.GlobalProgressBar.ProgressClass.ProgressDelayEnable = False
frmQMain.GlobalProgressBar.ProgressClass.ProgressBarMax = 100
frmQMain.GlobalProgressBar.ProgressClass.ProgressBarStages = 100
frmQMain.GlobalProgressBar.ProgressClass.LastProgressUpdateTime = Now
frmQMain.GlobalProgressBar.StatusPanel1Text = "Send progress"
' Hide the progress bar as the ChilKat library is failing to fire the 'PercentDone' event
' TO DO: follow up with ChilKat support
frmQMain.GlobalProgressBar.ProgressClass.ProgressBarVisibility = False
Call frmQMain.GlobalProgressBar.Show(vbModeless) ' Display the progress form
Call frmQMain.GlobalProgressBar.Refresh
DoEvents
frmQMain.ProcessMailManEvents = True ' Start processing mailman events
' Update the status bar to indicate signon in progress
If (Not IsMissing(sbStatus)) Then sbStatus.Panels(1).Text = "Checking email subsystem..."
ErrorString = "Create mail objects"
' Compose new objects including email message and mailman to send it
Set f = New frmEmailErrorDetails
Set frmQMain.email = New ChilkatEmail
Set frmQMain.mailman = New ChilkatMailMan
ErrorString = "Unlock mailman component"
' Unlock mailman component
If (Not frmQMain.mailman.IsUnlocked) Then
success = frmQMain.mailman.UnlockComponent("30-day trial")
If (success <> 1) Then GoTo EmailQuoteError
End If
' Clear SMTP log and enable verbose logging
frmQMain.mailman.ClearSmtpSessionLog
If (modEasyQProcs.FileExists(App.Path + "\Email Connection Log.txt")) Then
Call modEasyQProcs.DeleteFile(App.Path + "\Email Connection Log.txt")
End If
frmQMain.mailman.DebugLogFilePath = App.Path + "\Email Connection Log.txt"
frmQMain.mailman.VerboseLogging = 1
If (frmQMain.Protocol = "SMTP") Then
' Set SMTP logon parameters
frmQMain.mailman.SmtpHost = frmQMain.ServerName ' SMTP host
frmQMain.mailman.SmtpUsername = frmQMain.UserName ' User login name
frmQMain.mailman.SmtpPassword = frmQMain.Password ' User login password
If (frmQMain.UseSSL) Then
frmQMain.mailman.SmtpSsl = 1 ' Using SSL
Else
frmQMain.mailman.SmtpSsl = 0 ' Not using SSL
End If
If (frmQMain.AuthenticationMode <> "NONE") Then frmQMain.mailman.SmtpAuthMethod = frmQMain.AuthenticationMode
frmQMain.mailman.SmtpPort = frmQMain.PortNumber ' SSL port number
ElseIf (frmQMain.Protocol = "HTTP") Then
' Set HTTP logon parameters
frmQMain.mailman.HttpProxyHostname = frmQMain.ServerName ' HTTP host
frmQMain.mailman.HttpProxyUsername = frmQMain.UserName ' User login name
frmQMain.mailman.HttpProxyPassword = frmQMain.Password ' User login password ' Not using SSL
If (frmQMain.AuthenticationMode <> "NONE") Then frmQMain.mailman.HttpProxyAuthMethod = frmQMain.AuthenticationMode
frmQMain.mailman.HttpProxyPort = frmQMain.PortNumber ' SSL port number
End If
' Set misc email parameters
frmQMain.email.FromAddress = frmQMain.EmailAddress
frmQMain.email.fromName = frmQMain.DisplayName + " <" + frmQMain.EmailAddress + ">"
If (Not IsMissing(sbStatus)) Then sbStatus.Panels(1).Text = "Composing email..."
ErrorString = "To recipients"
' Insert "To" recipients from delimited list
DelimitedStrings = Split(ToList, EMAIL_LIST_DELIMITER)
For i = LBound(DelimitedStrings) To UBound(DelimitedStrings)
success = frmQMain.email.AddTo(DelimitedStrings(i), DelimitedStrings(i))
If (success <> 1) Then GoTo EmailQuoteError
Next i
ErrorString = "CC recipients"
' Insert "CC" recipients from delimited list
DelimitedStrings = Split(CCList, EMAIL_LIST_DELIMITER)
For i = LBound(DelimitedStrings) To UBound(DelimitedStrings)
success = frmQMain.email.AddCC(DelimitedStrings(i), DelimitedStrings(i))
If (success <> 1) Then GoTo EmailQuoteError
Next i
ErrorString = "attachments"
NumberOfAttachments = 0
Body = ""
' Add finalised list of attachments from delimited list created in the Email Details form
DelimitedStrings = Split(AttachmentList, EMAIL_LIST_DELIMITER)
For i = LBound(DelimitedStrings) To UBound(DelimitedStrings)
If (frmQMain.email.AddFileAttachment(DelimitedStrings(i)) = "") Then GoTo EmailQuoteError
NumberOfAttachments = NumberOfAttachments + 1
Body = Space(1) + Body ' Add a space for the attachment
Next i
ErrorString = "subject and body"
' Set the subject and message body fields
frmQMain.email.Subject = Subject
If (NumberOfAttachments > 0) Then Body = Body + vbCrLf
Body = Body + Message
frmQMain.email.Body = Body
' Update the status bar to indicate message is being sent
If (Not IsMissing(sbStatus)) Then sbStatus.Panels(1).Text = "Sending email and waiting for completion..."
ErrorString = "send"
' Send the message
IsRetrySend = False
RetrySend:
success = frmQMain.mailman.SendEmail(frmQMain.email)
If (success = 0) Then
If (Not IsRetrySend) Then
IsRetrySend = True
' Re-trying the send with an automatic look up of the server name
If (frmQMain.Protocol = "SMTP") Then
frmQMain.mailman.SmtpHost = frmQMain.mailman.MxLookup(frmQMain.EmailAddress)
ElseIf (frmQMain.Protocol = "HTTP") Then
frmQMain.mailman.HttpProxyHostname = frmQMain.mailman.MxLookup(frmQMain.EmailAddress)
End If
GoTo RetrySend
End If
End If
' Print a message if the email was sent successfully
If (success = 1) Then
Call MsgBox("Email sent successfully.", vbOKOnly Or vbInformation, "Interact EasyQuote")
SMTPSendEmail = True
Else
GoTo EmailQuoteError
End If
Else
Call MsgBox("Email transmission cancelled. Email not sent.", vbOKOnly Or vbInformation, "Interact EasyQuote")
End If
GoTo CommonExit
ErrorHandler:
Call NonCriticalError(MODULE, Err, "MAPISendEmail:ErrorHandler", "(current action = " + ErrorString + ")")
GoTo CommonExit
SetEmailDetailsExit:
Call MsgBox("Before sending Email you must fill out the Email parameters in the Options dialog Email tab. See Tools | Options on the main form.", vbOKOnly Or vbInformation, "Interact EasyQuote")
GoTo CommonExit
EmailQuoteError:
Call MsgBox("Email was not sent (email error = " + CStr(success) + "): Current action = " + ErrorString + ".", vbOKOnly Or vbInformation, "Interact EasyQuote")
Call Load(f)
f.ErrorSource = "ChilKat mail object"
#If VERS_TEST Then
f.ErrorLog = frmQMain.email.LastErrorXml
#Else
f.ErrorLog = frmQMain.email.LastErrorText
#End If
Call f.Show(vbModal)
GoTo CommonExit
EmailQuoteError2:
Call MsgBox("Email was not sent (mailman error = " + CStr(success) + "): Current action = " + ErrorString + ".", vbOKOnly Or vbInformation, "Interact EasyQuote")
Call Load(f)
f.ErrorSource = "ChilKat mailman"
#If VERS_TEST Then
f.ErrorLog = frmQMain.mailman.LastErrorXml
#Else
f.ErrorLog = frmQMain.mailman.LastErrorText
#End If
Call f.Show(vbModal)
' Fall thru
CommonExit: ' Common exit point
' Clear error and execute common exit code
Err.Clear
' Fall thru
' Force cleanup, clear any error and exit
On Error Resume Next
If (frmQMain.Protocol = "SMTP") Then
Call frmQMain.mailman.CloseSmtpConnection
End If
If (Not (frmQMain.GlobalProgressBar Is Nothing)) Then
frmQMain.GlobalProgressBar.ProgressCloseEnable = True
Call Unload(frmQMain.GlobalProgressBar)
Set frmQMain.GlobalProgressBar = Nothing
End If
If (Not (frmPassword Is Nothing)) Then
Call Unload(frmPassword)
Set frmPassword = Nothing
End If
If (Not (frmQMain.email Is Nothing)) Then Set frmQMain.email = Nothing
If (Not (frmQMain.mailman Is Nothing)) Then Set frmQMain.mailman = Nothing
If (Not (RS Is Nothing)) Then
Call RS.Close
Set RS = Nothing
End If
' Reset the status bar to idle state
If (Not IsMissing(sbStatus)) Then sbStatus.Panels(1).Text = SB_IDLE
' End of error handler scope
On Error GoTo 0
End Function
Attachment 2: ChilKat debug log produced when attempting to connect to Hotmail
SendEmail: DllDate: Mar 27 2014 ChilkatVersion: 9.5.0.23 UnlockPrefix: 30-day trial Username: DAVID-LT-I7:DAVID Architecture: Little Endian; 32-bit Language: ActiveX VerboseLogging: 1 recipients: TO: vitalida@msn.com totalCount: 1 (leaveContext) renderToMime: createEmailForSending: xSigningAlg: sha1 Auto-generating Message-ID assembleMimeBody: contentType: multipart/mixed isEmailAttachment: attachmentReason: contentType: multipart/mixed subject: Seubert's Panel and Paint: Quote5165.txt from: "David Vitali <vitalida@msn.com>" <vitalida@msn.com> No (multipart enclosure) (leaveContext) (leaveContext) assembleMimeBody: contentType: text/plain isEmailAttachment: attachmentReason: contentType: text/plain No, attachment is not indicated. (leaveContext) (leaveContext) getEncodedBody: contentType: text/plain cp: 0 (leaveContext) (leaveContext) assembleMimeBody: contentType: text/plain isEmailAttachment: attachmentReason: contentType: text/plain disposition: attachment filename: Quote5165.txt name: Quote5165.txt Yes (disposition=attachment) (leaveContext) (leaveContext) getEncodedBody: contentType: text/plain (leaveContext) (leaveContext) (leaveContext) createFromMimeText: loadMimeComplete: loadMimeHeaderText: (leaveContext) parseMimeBody: loadMimeComplete: loadMimeHeaderText: (leaveContext) parseMimeBody: setMimeBodyByEncoding: setMimeBodyQP: (leaveContext) (leaveContext) (leaveContext) (leaveContext) loadMimeComplete: loadMimeHeaderText: (leaveContext) parseMimeBody: setMimeBodyByEncoding: setMimeBodyQP: (leaveContext) (leaveContext) (leaveContext) (leaveContext) (leaveContext) (leaveContext) loadFromMimeTextProcessing: (leaveContext) createFromMimeObject: createRfc822Address: (leaveContext) createRfc822Addresses: createRfc822Address: (leaveContext) (leaveContext) loadMimeHeaderText: (leaveContext) createFromMimeObject: loadMimeHeaderText: (leaveContext) Setting email body (A) (leaveContext) createFromMimeObject: loadMimeHeaderText: (leaveContext) Setting email body (A) (leaveContext) Setting email body (A) (leaveContext) (leaveContext) (leaveContext) assembleMimeBody: contentType: multipart/mixed isEmailAttachment: attachmentReason: contentType: multipart/mixed subject: Seubert's Panel and Paint: Quote5165.txt from: "David Vitali <vitalida@msn.com>" <vitalida@msn.com> No (multipart enclosure) (leaveContext) (leaveContext) assembleMimeBody: contentType: text/plain isEmailAttachment: attachmentReason: contentType: text/plain No, attachment is not indicated. (leaveContext) (leaveContext) getEncodedBody: contentType: text/plain cp: 1252 Converting from utf-8... (leaveContext) (leaveContext) assembleMimeBody: contentType: text/plain isEmailAttachment: attachmentReason: contentType: text/plain disposition: attachment filename: Quote5165.txt name: Quote5165.txt Yes (disposition=attachment) (leaveContext) (leaveContext) getEncodedBody: contentType: text/plain (leaveContext) (leaveContext) Email assembled. (leaveContext) renderToMime: Elapsed time: 47 millisec (leaveContext) progressTotal: 9621 SmtpConnect: SmtpHost: smtp.hotmail.com SmtpPort: 25 SmtpUsername: vitalida SmtpPassword: volep:0D SmtpSsl: 0 StartTLS: 0 Need new SMTP connection checkForExistingConnection: Elapsed time: 0 millisec SMTP_Connect: Connecting to SMTP server smtp.hotmail.com:25 smtp_host: smtp.hotmail.com smtp_port: 25 smtp_user: vitalida connect2: hostname: smtp.hotmail.com port: 25 ssl: 0 connectSocket: domainOrIpAddress: smtp.hotmail.com port: 25 connectTimeoutMs: 30000 connect_ipv6_or_ipv4: Multi-threaded domain to IP address resolution resolveHostname6: getAddressInfo: Failed to get host address info. (3) SocketError: Error 0xb7 Check to make sure the connection is not blocked by a firewall or anti-virus port filtering. hostOrIpAddr: smtp.hotmail.com port: 25 Versions of Windows earlier than Windows XP are limited to handling IPv4 only On Windows Server 2003 and Windows XP, IPv6 addresses are returned only if IPv6 is installed on the local computer. (leaveContext) (leaveContext) Domain to IP address resolution failed. (leaveContext) (leaveContext) failReason2: 2 (leaveContext) Failed to connect to SMTP server. (leaveContext) checkOrMakeSmtpConnection: Elapsed time: 16 millisec (leaveContext) Failed. (leaveContext) MxLookup: DllDate: Mar 27 2014 ChilkatVersion: 9.5.0.23 UnlockPrefix: 30-day trial Username: DAVID-LT-I7:DAVID Architecture: Little Endian; 32-bit Language: ActiveX VerboseLogging: 1 emailAddr: vitalida@msn.com createRfc822Address: (leaveContext) hostname: mx4.hotmail.com Success. (leaveContext) SendEmail: DllDate: Mar 27 2014 ChilkatVersion: 9.5.0.23 UnlockPrefix: 30-day trial Username: DAVID-LT-I7:DAVID Architecture: Little Endian; 32-bit Language: ActiveX VerboseLogging: 1 recipients: TO: vitalida@msn.com totalCount: 1 (leaveContext) renderToMime: createEmailForSending: xSigningAlg: sha1 Auto-generating Message-ID assembleMimeBody: contentType: multipart/mixed isEmailAttachment: attachmentReason: contentType: multipart/mixed subject: Seubert's Panel and Paint: Quote5165.txt from: "David Vitali <vitalida@msn.com>" <vitalida@msn.com> No (multipart enclosure) (leaveContext) (leaveContext) assembleMimeBody: contentType: text/plain isEmailAttachment: attachmentReason: contentType: text/plain No, attachment is not indicated. (leaveContext) (leaveContext) getEncodedBody: contentType: text/plain cp: 0 (leaveContext) (leaveContext) assembleMimeBody: contentType: text/plain isEmailAttachment: attachmentReason: contentType: text/plain disposition: attachment filename: Quote5165.txt name: Quote5165.txt Yes (disposition=attachment) (leaveContext) (leaveContext) getEncodedBody: contentType: text/plain (leaveContext) (leaveContext) (leaveContext) createFromMimeText: loadMimeComplete: loadMimeHeaderText: (leaveContext) parseMimeBody: loadMimeComplete: loadMimeHeaderText: (leaveContext) parseMimeBody: setMimeBodyByEncoding: setMimeBodyQP: (leaveContext) (leaveContext) (leaveContext) (leaveContext) loadMimeComplete: loadMimeHeaderText: (leaveContext) parseMimeBody: setMimeBodyByEncoding: setMimeBodyQP: (leaveContext) (leaveContext) (leaveContext) (leaveContext) (leaveContext) (leaveContext) loadFromMimeTextProcessing: (leaveContext) createFromMimeObject: createRfc822Address: (leaveContext) createRfc822Addresses: createRfc822Address: (leaveContext) (leaveContext) loadMimeHeaderText: (leaveContext) createFromMimeObject: loadMimeHeaderText: (leaveContext) Setting email body (A) (leaveContext) createFromMimeObject: loadMimeHeaderText: (leaveContext) Setting email body (A) (leaveContext) Setting email body (A) (leaveContext) (leaveContext) (leaveContext) assembleMimeBody: contentType: multipart/mixed isEmailAttachment: attachmentReason: contentType: multipart/mixed subject: Seubert's Panel and Paint: Quote5165.txt from: "David Vitali <vitalida@msn.com>" <vitalida@msn.com> No (multipart enclosure) (leaveContext) (leaveContext) assembleMimeBody: contentType: text/plain isEmailAttachment: attachmentReason: contentType: text/plain No, attachment is not indicated. (leaveContext) (leaveContext) getEncodedBody: contentType: text/plain cp: 1252 Converting from utf-8... (leaveContext) (leaveContext) assembleMimeBody: contentType: text/plain isEmailAttachment: attachmentReason: contentType: text/plain disposition: attachment filename: Quote5165.txt name: Quote5165.txt Yes (disposition=attachment) (leaveContext) (leaveContext) getEncodedBody: contentType: text/plain (leaveContext) (leaveContext) Email assembled. (leaveContext) renderToMime: Elapsed time: 47 millisec (leaveContext) progressTotal: 9621 SmtpConnect: SmtpHost: mx4.hotmail.com SmtpPort: 25 SmtpUsername: vitalida SmtpPassword: volep:0D SmtpSsl: 0 StartTLS: 0 Need new SMTP connection checkForExistingConnection: Elapsed time: 0 millisec SMTP_Connect: Connecting to SMTP server mx4.hotmail.com:25 smtp_host: mx4.hotmail.com smtp_port: 25 smtp_user: vitalida connect2: hostname: mx4.hotmail.com port: 25 ssl: 0 connectSocket: domainOrIpAddress: mx4.hotmail.com port: 25 connectTimeoutMs: 30000 connect_ipv6_or_ipv4: Multi-threaded domain to IP address resolution resolveHostname6: getAddressInfo: (leaveContext) (leaveContext) AddrInfoList: AddrInfo: ai_flags: 0 ai_family: 2 ai_socktype: 0 ai_protocol: 0 ai_addrlen: 16 ai_canonname: (NULL) (leaveContext) AddrInfo: ai_flags: 0 ai_family: 2 ai_socktype: 0 ai_protocol: 0 ai_addrlen: 16 ai_canonname: (NULL) (leaveContext) AddrInfo: ai_flags: 0 ai_family: 2 ai_socktype: 0 ai_protocol: 0 ai_addrlen: 16 ai_canonname: (NULL) (leaveContext) AddrInfo: ai_flags: 0 ai_family: 2 ai_socktype: 0 ai_protocol: 0 ai_addrlen: 16 ai_canonname: (NULL) (leaveContext) AddrInfo: ai_flags: 0 ai_family: 2 ai_socktype: 0 ai_protocol: 0 ai_addrlen: 16 ai_canonname: (NULL) (leaveContext) AddrInfo: ai_flags: 0 ai_family: 2 ai_socktype: 0 ai_protocol: 0 ai_addrlen: 16 ai_canonname: (NULL) (leaveContext) AddrInfo: ai_flags: 0 ai_family: 2 ai_socktype: 0 ai_protocol: 0 ai_addrlen: 16 ai_canonname: (NULL) (leaveContext) AddrInfo: ai_flags: 0 ai_family: 2 ai_socktype: 0 ai_protocol: 0 ai_addrlen: 16 ai_canonname: (NULL) (leaveContext) AddrInfo: ai_flags: 0 ai_family: 2 ai_socktype: 0 ai_protocol: 0 ai_addrlen: 16 ai_canonname: (NULL) (leaveContext) AddrInfo: ai_flags: 0 ai_family: 2 ai_socktype: 0 ai_protocol: 0 ai_addrlen: 16 ai_canonname: (NULL) (leaveContext) AddrInfo: ai_flags: 0 ai_family: 2 ai_socktype: 0 ai_protocol: 0 ai_addrlen: 16 ai_canonname: (NULL) (leaveContext) AddrInfo: ai_flags: 0 ai_family: 2 ai_socktype: 0 ai_protocol: 0 ai_addrlen: 16 ai_canonname: (NULL) (leaveContext) AddrInfo: ai_flags: 0 ai_family: 2 ai_socktype: 0 ai_protocol: 0 ai_addrlen: 16 ai_canonname: (NULL) (leaveContext) AddrInfo: ai_flags: 0 ai_family: 2 ai_socktype: 0 ai_protocol: 0 ai_addrlen: 16 ai_canonname: (NULL) (leaveContext) AddrInfo: ai_flags: 0 ai_family: 2 ai_socktype: 0 ai_protocol: 0 ai_addrlen: 16 ai_canonname: (NULL) (leaveContext) (leaveContext) connecting to IPV4 address... ipAddress: 65.55.33.135 createSocket: (leaveContext) connect: Waiting for the connect to complete... (leaveContext) (leaveContext) (leaveContext) failReason2: 7 (leaveContext) Failed to connect to SMTP server. (leaveContext) checkOrMakeSmtpConnection: Elapsed time: 21060 millisec (leaveContext) Failed. (leaveContext) CloseSmtpConnection: DllDate: Mar 27 2014 ChilkatVersion: 9.5.0.23 UnlockPrefix: 30-day trial Username: DAVID-LT-I7:DAVID Architecture: Little Endian; 32-bit Language: ActiveX VerboseLogging: 1 terminateConnection: (leaveContext) (leaveContext)