Una cosa tipo:
codice:
Option Explicit
Dim rs As ADODB.Recordset
Dim y As Integer
Private WinsockState As WinsockControlState
Dim strServerResponse As String
Dim strResponseCode As String
Dim strDataToSend As String
Private Enum WinsockControlState
MAIL_CONNECT
MAIL_HELO
MAIL_FROM
MAIL_RCPTTO
MAIL_DATA
MAIL_HEADER
MAIL_DOT
MAIL_QUIT
End Enum
Private Sub Form_Load()
WinSock.Protocol = sckTCPProtocol
WinSock.Connect Trim(txtEmailServer.Text), Val(Trim(txtEmailServerPort.Text))
y = 0
Set rs = New ADODB.Recordset
rs.Open "SELECT Indirizzo FROM Email", "driver={Microsoft Access Driver (*.mdb)};dbq=C:\Documents and Settings\Andriy\Desktop\email.mdb", 1
End Sub
While rs.EOF
y = y + 1
WinsockState = MAIL_CONNECT
rs.MoveNext
txtToEmailAddress.Text = "nome" & y & " <" & rs("Indirizzo") & ">"
Wend
Private Sub WinSock_DataArrival(ByVal bytesTotal As Long)
WinSock.GetData strServerResponse
txtServerReplies.Text = txtServerReplies.Text & strServerResponse
strResponseCode = Left(strServerResponse, 3)
If strResponseCode = "250" Or strResponseCode = "220" Or strResponseCode = "354" Then
Select Case WinsockState
Case MAIL_CONNECT
WinsockState = MAIL_HELO
strDataToSend = Trim$(txtFromEmailAddress.Text)
strDataToSend = Mid(strDataToSend, 1 + InStr(1, strDataToSend, "<"))
strDataToSend = Left$(strDataToSend, InStr(1, strDataToSend, "@") - 1)
WinSock.SendData "HELO " & strDataToSend & vbCrLf
Case MAIL_HELO
WinsockState = MAIL_FROM
WinSock.SendData "MAIL FROM: " & Mid(txtFromEmailAddress.Text, InStr(1, txtFromEmailAddress.Text, "<")) & vbCrLf
Case MAIL_FROM
WinsockState = MAIL_RCPTTO
WinSock.SendData "RCPT TO: " & Mid(txtToEmailAddress.Text, InStr(1, txtToEmailAddress.Text, "<")) & vbCrLf
Case MAIL_RCPTTO
WinsockState = MAIL_DATA
WinSock.SendData "DATA" & vbCrLf
Case MAIL_DATA
WinsockState = MAIL_DOT
WinSock.SendData "Return-Path: <" & txtFromEmailAddress.Text & ">" & vbCrLf & _
"Content-type: text/plain" & vbCrLf & _
"Priority: normal" & vbCrLf & _
"To: " & txtToEmailAddress.Text & vbCrLf & _
"From: " & txtFromEmailAddress.Text & vbCrLf & _
"Subject:" & txtEmailSubject.Text & vbLf & vbCrLf
Dim varLines As Variant
Dim varLine As Variant
Dim strMessage As String
strMessage = txtMessage.Text & vbCrLf & vbCrLf
varLines = Split(strMessage, vbCrLf)
strMessage = ""
For Each varLine In varLines
WinSock.SendData CStr(varLine) & vbLf
Next
WinSock.SendData "." & vbCrLf
Case MAIL_DOT
If rs.EOF then
WinsockState = MAIL_QUIT
WinSock.SendData "QUIT" & vbCrLf
Else
y = y + 1
rs.MoveNext
txtToEmailAddress.Text = "nome" & y & " <" & rs("Indirizzo") & ">"
WinsockState = MAIL_FROM
WinSock.SendData "MAIL FROM: " & Mid(txtFromEmailAddress.Text, InStr(1, txtFromEmailAddress.Text, "<")) & vbCrLf
End If
Case MAIL_QUIT
WinSock.Close
rs.Close
End Select
Else
WinSock.Close
If Not WinsockState = MAIL_QUIT Then
If Left$(strServerResponse, 3) = 421 Then
MsgBox "The from email address is invalid for this mail server. Please check it and try again"
Else
MsgBox "Error: " & strServerResponse, vbCritical, "Error"
End If
Else
MsgBox "Message sent!", vbOKOnly + vbInformation, App.Title
End If
End If
End Sub