User defined type not defined
am 08.04.2008 13:20:54 von u24149Hello,
I have been working with visual basic for a while but this is something I
have never understood.
I have some code in a VB6 application that sends email using Winsock and
works great.
I am trying to incorporate the code in Access 2000 . I inserted the
activex control "Microsoft Winsock control (SP6) and it shows up on the form.
When I ran the form I get "object variable with block not set" on the line
"Winsock1.LocalPort = 0", I added the "Set winsock1 = ActiveXCtl5.Object".
Now I get "User defined type not defined." I don't get any errors when I
compile . The code is below. Can anyone enlighten me ?
Dim winsock1 As Winsock
Sub SendEmail(MailServerName As String, _
FromName As String, _
FromEmailAddress As String, _
ToName As String, _
ToEmailAddress As String, _
EmailSubject As String, _
EmailBodyOfMessage As String)
'added next line stops object variable with block not set
' but then get "user defined type not defined
Set winsock1 = ActiveXCtl5.Object
Winsock1.LocalPort = 0 ' Must set local port to 0 (Zero) or you can only
send 1 e-mail pre program start
If Winsock1.State = sckClosed Then ' Check to see if socket is closed
DateNow = Format(Date, "dd Mmm YYYY")
first = "mail from:" & Chr(32) & FromEmailAddress & vbCrLf ' Get who's
sending E-Mail address
Second = "rcpt to:" & Chr(32) & "<" & ToEmailAddress & ">" & vbCrLf ' Get
who mail is going to
Third = "Date:" & Chr(32) & DateNow & vbCrLf ' Date when being sent
Fourth = "From:" & Chr(32) & FromName & vbCrLf ' Who's Sending
Fifth = "To:" & Chr(32) & ToName & vbCrLf ' Who it going to
Sixth = "Subject:" & Chr(32) & EmailSubject & vbCrLf ' Subject of E-
Mail
Seventh = EmailBodyOfMessage + vbCrLf ' E-mail message body
Ninth = "dans emailer" & vbCrLf ' What program sent the e-mail,
customize this
Eighth = Fourth + Third + Ninth + Fifth + Sixth ' Combine for proper
SMTP sending
Winsock1.Protocol = sckTCPProtocol ' Set protocol for sending
Winsock1.RemoteHost = MailServerName ' Set the server address
Winsock1.RemotePort = 25 ' Set the SMTP Port
Winsock1.Connect ' Start connection
WaitFor ("220")
Winsock1.SendData ("HELO dsperry.dayton-phoenix.com" + vbCrLf)
WaitFor ("250")
Winsock1.SendData (first)
WaitFor ("250")
Winsock1.SendData (Second)
WaitFor ("250")
Winsock1.SendData ("data" + vbCrLf)
WaitFor ("354")
Winsock1.SendData (Eighth + vbCrLf)
Winsock1.SendData (Seventh + vbCrLf)
Winsock1.SendData ("." + vbCrLf)
WaitFor ("250")
Winsock1.SendData ("quit" + vbCrLf)
WaitFor ("221")
Winsock1.Close
Else
MsgBox (Str(Winsock1.State))
End If
End Sub
Sub WaitFor(ResponseCode As String)
Start = Timer ' Time event so won't get stuck in loop
While Len(Response) = 0
Tmr = Start - Timer
DoEvents ' Let System keep checking for incoming response
**IMPORTANT**
If Tmr > 50 Then ' Time in seconds to wait
MsgBox "SMTP service error, timed out while waiting for response"
Exit Sub
End If
Wend
While Left(Response, 3) <> ResponseCode
DoEvents
If Tmr > 50 Then
MsgBox "SMTP service error, impromper response code. Code should
have been: " + ResponseCode + " Code recieved: " + Response
Exit Sub
End If
Wend
Response = "" ' Sent response code to blank **IMPORTANT**
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Winsock1.GetData Response ' Check for incoming response *IMPORTANT*
End Sub
--
Danny C. Sperry
Message posted via AccessMonster.com
http://www.accessmonster.com/Uwe/Forums.aspx/databases-ms-ac cess/200804/1