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

Rispondi quotando