SoloCodigo
		Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: Vate en Sábado 13 de Enero de 2007, 01:35
		
			
			- 
				Hola a todos, estoy haciendo una aplicacion que manda correos, la aplicacion funciona perfectamente para un solo destinatario de correo, pero necesito mandar el mismo correo a varias personas. Utilizo un winsock Aqui muestro parte de mi codigo. La funcion a continuacion tiene como parametros el winsock , el servidor SMTP (txtHost),el remitente(txtSender) ,el destinatario(txtRecipient),El titulo del correo(txtSubject) y el cuerpo del mensaje(txtMessage)
 
 
 Public Sub Envia_Mail(Winsock1 As Winsock, txtHost As String, txtSender As String, txtRecipient As String, txtSubject As String, txtMessage As String)
 'Funcion para enviar correos
 Winsock1.Connect Trim$(txtHost), 25
 m_State = MAIL_CONNECT
 End Sub
 
 
 El evento que utilizo del winsock es el data arrival
 
 Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
 
 Dim strServerResponse   As String
 Dim strResponseCode     As String
 Dim strDataToSend       As String
 '
 'Retrive data from winsock buffer
 '
 Winsock1.GetData strServerResponse
 '
 Debug.Print strServerResponse
 '
 'Get server response code (first three symbols)
 '
 strResponseCode = Left(strServerResponse, 3)
 '
 'Only these three codes tell us that previous
 'command accepted successfully and we can go on
 '
 If strResponseCode = "250" Or _
 strResponseCode = "220" Or _
 strResponseCode = "354" Then
 
 Select Case m_State
 Case MAIL_CONNECT
 'Change current state of the session
 m_State = MAIL_HELO
 '
 'Remove blank spaces
 strDataToSend = Trim$(txtSender)
 '
 'Retrieve mailbox name from e-mail address
 strDataToSend = Left$(strDataToSend, _
 InStr(1, strDataToSend, "@") - 1)
 'Send HELO command to the server
 Winsock1.SendData "HELO " & strDataToSend & vbCrLf
 '
 Debug.Print "HELO " & strDataToSend
 '
 Case MAIL_HELO
 '
 'Change current state of the session
 m_State = MAIL_FROM
 '
 'Send MAIL FROM command to the server
 Winsock1.SendData "MAIL FROM:" & Trim$(txtSender) & vbCrLf
 '
 Debug.Print "MAIL FROM:" & Trim$(txtSender)
 '
 Case MAIL_FROM
 '
 'Change current state of the session
 m_State = MAIL_RCPTTO
 '
 'Send RCPT TO command to the server
 Winsock1.SendData "RCPT TO:" & Trim$(txtRecipient) & vbCrLf
 '
 Debug.Print "RCPT TO:" & Trim$(txtRecipient)
 '
 Case MAIL_RCPTTO
 '
 'Change current state of the session
 m_State = MAIL_DATA
 '
 'Send DATA command to the server
 Winsock1.SendData "DATA" & vbCrLf
 '
 Debug.Print "DATA"
 '
 Case MAIL_DATA
 '
 'Change current state of the session
 m_State = MAIL_DOT
 '
 'So now we are sending a message body
 'Each line of text must be completed with
 'linefeed symbol (Chr$(10) or vbLf) not with vbCrLf
 '
 'Send Subject line
 Winsock1.SendData "Subject:" & txtSubject & vbLf
 '
 Debug.Print "Subject:" & txtSubject
 '
 Dim varLines    As Variant
 Dim varLine     As Variant
 '
 'Parse message to get lines (for VB6 only)
 varLines = Split(txtMessage, vbCrLf)
 '
 'Send each line of the message
 For Each varLine In varLines
 Winsock1.SendData CStr(varLine) & vbLf
 Debug.Print CStr(varLine)
 Next
 '
 'Send a dot symbol to inform server
 'that sending of message comleted
 Winsock1.SendData "." & vbCrLf
 '
 Debug.Print "."
 '
 Case MAIL_DOT
 'Change current state of the session
 m_State = MAIL_QUIT
 '
 'Send QUIT command to the server
 Winsock1.SendData "QUIT" & vbCrLf
 '
 Debug.Print "QUIT"
 Case MAIL_QUIT
 '
 'Close connection
 Winsock1.Close '''''
 '
 End Select
 
 Else
 '
 'If we are here server replied with
 'unacceptable respose code therefore we need
 'close connection and inform user about problem
 '
 Winsock1.Close '''''
 '
 If Not m_State = MAIL_QUIT Then
 MsgBox "SMTP Error: " & strServerResponse, _
 vbInformation, "SMTP Error"
 Else
 MsgBox "Message sent successfuly.", vbInformation
 End If
 '
 End If
 End Sub
 
 Como dije anteriormente, el programa funciona perfectamente para un solo destinatario de correo , pero no para varios. Si alguien sabe como hacerlo, le agradeceria me informe
 
 Gracias
 
 El vate
- 
				Buenas.
 
 No  le puse mucha atencion al codigo ya q es largo y estoy cansado  :P
 Pero por lo que veo no hay ningun bucle ahi. Quisas no lo vi xD
 Otra cosa es que el servidor smtp puede tener un tiempo de espera entre mail y mail para evitar spam, como lo que quieres hacer =P intenta usar otro servidor
 
 Busca separar los destinatarios y mandar por separado, ya que muchos clientes o servidores toman los mails que van dirigidos a multiples usuarios como spam. Ademas si te llega un mail de alguien que no conoces que esta dirigido a muchos usuarios, ni lo lees (por lo menos yo y mucha gente q conosco)
 
 Bueno, creo q no fui de gran ayuda. Pero quisas ppara algo sirva ^^
 
 Saludos