Visual Basic - winsock con email

Life is soft - evento anual de software empresarial
 
Vista:

winsock con email

Publicado por marvin (12 intervenciones) el 12/12/2006 20:22:56
Buen dia espero puedan ayudarme con el problema q tengo en este momento, lo explico:

NEcesito enviar un correo electronico con un archivo adjunto, he conseguido conectarme a mi distribuidor de correo por smtp y logro enviar el correo, pero no he podido enviar el archivo adjunto lo estoy haciendo via smtp puerto 25, con la sintaxis de helo, mail from, to, etc. Utilizo el winsock para conectarme via remotamente, para el envio de el correo no tengo ningun problema pero no se como debo enviarle el parametro de archivo adjunto, si pudieran ayudarme les estaria muy agradecido, adjunto envio el codigo q tengo actualmente. De antemano muchas gracias

Private Sub btnAceptar_Click()
EnviarCorreoElectronico
End Sub

Private Sub EnviarCorreoElectronico()
If Sock1.State <> 0 Then 'si tiene alguna conexion abierta
Sock1.Close 'La cierra
End If
Sock1.RemoteHost = xsmtpHost 'Host al que se conectara
Sock1.RemotePort = 25 'Puerto de conexion 25 SMTP
Sock1.Connect 'Intenta la conexion.....
Enter = Chr(13) + Chr(10) 'Inicializa la variable enter

Nombre = Codigo + "-" + xsucursal 'El nombre de remitente en el correo electronico
Mensaje = "Archivo de Sucursal: " + Codigo & _
" Fecha: " & Format(dtFecha.Value, "dd/mmm/yyyy") & "" 'El mensaje
Titulo = "Control de Ingreso de Personal" 'El Asunto

End Sub

Private Sub Form_Unload(Cancel As Integer)
Sock1.Close
End Sub

Private Sub Sock1_Connect()
Sock1.Tag = 1 'Voy en el paso 1
Sock1.SendData "HELO " & Nombre & Enter 'Le envio un comando al Servidor y Enter
End Sub

Private Sub Sock1_DataArrival(ByVal bytesTotal As Long)
Sock1.GetData Datos, vbString 'Recibidos los datos de mensajes
txMsjRecibidos = txMsjRecibidos + Datos 'Los pongo en el textbox

If Mid(Datos, 1, 9) = "550 Relay" Then
MsgBox "El Servidor No Permite Enviar Emails Sin Cuenta", vbExclamation, "Control de Personal"
Sock1.Close 'Cierra la conexion
Sock1.Tag = 0 'Se acabo
End If

If Sock1.Tag = 1 Then 'Si voy en el paso 1
Sock1.SendData "RSET" & Enter 'Le envio RSET
Sock1.Tag = 2
Exit Sub
End If

If Sock1.Tag = 2 Then 'Si voy en el paso 2
Sock1.SendData "MAIL FROM: <" & xemail & ">" & Enter 'Le envio el mail de remitente
Sock1.Tag = 3
Exit Sub
End If

If Sock1.Tag = 3 Then
Sock1.SendData "RCPT TO: <" & xemailDest & ">" & Enter 'Le envio mail de destinatario
' if mailConCopia <--- es decir si hay varios destinatarios
' Sock1.SendData "RCPT TO: <" & xemailDest & "> " & Enter 'y asi a todos los que vayan dirigidos
' end if
Sock1.Tag = 4
Exit Sub
End If

If Sock1.Tag = 4 Then
Sock1.SendData "DATA" & Enter
Sock1.Tag = 5
Exit Sub
End If

If Sock1.Tag = 5 Then
Sock1.SendData "TO: " & xemailDest & Enter 'Le envio para quien va
' If CCMail <> "-" Then ' Si tiene para un Mail CC (con copia, creo)
' Sock1.SendData "CC: " & CCMail & Enter ' Le envio para quien va el CC
' End If
Sock1.SendData "From: " & Nombre & " <" & xemail & ">" & Enter ' El Nombre y Mail
Sock1.SendData "Subject: " & Titulo & Enter ' El Subject (Titulo)
Sock1.SendData Enter ' Un Enter indica que empieza el Mensaje
Sock1.SendData Mensaje & Enter ' Le envio el Mensaje

'AQUI ES DONDE TRATO DE ENVIAR EL ARCHIVO PERO NO SE COMO ENTRARLE A LA
'SINTAXIS DEL WINSOCK
' Sock1.SendData Archivo & Enter
Sock1.SendData "." & Enter 'Esto indica el fin del mail
Sock1.Tag = 6 'Le digo q voy al siguiente paso
Exit Sub 'Salgo del procedimiento
End If

If Sock1.Tag = 6 Then
Sock1.SendData "QUIT" & Enter 'Cierra la conexion
Sock1.Tag = 7 'Se dirige al siguiente paso
Exit Sub
End If

If Sock1.Tag = 7 Then
Sock1.Tag = 0 'Se termina
Sock1.Close 'Cierra la conexion
MsgBox "Correo Electrónico Enviado", vbExclamation, "Control de Personal"
Exit Sub
End If
End Sub

Private Sub Sock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
If Number = 11004 Then 'Si el error es este
MsgBox "No existe el Servidor", vbExclamation, "Error"
Exit Sub
End If
If Number = 10060 Then 'Si es este
MsgBox "Tiempo agotado para conexion", vbExclamation, "Error"
Exit Sub
End If
If Number = 10065 Then 'o este
MsgBox "Sin ruta al Servidor", vbExclamation, "Error"
Exit Sub
End If
'si no es ninguno de los anterior, entonces que lo muestre:
MsgBox Number & " - " & Description ' Mostrar mensaje de Error
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:winsock con email

Publicado por Pita (38 intervenciones) el 14/12/2006 06:09:04
en la San web del programador

hay un ejemplo con envio de archivo adjunto y era facil de usar porque estaba en una funcion le mandabas una variable y te enpaketaba la custion

yo tuve k hacer algo igual a lo tuyo lo tengo por hay no me acuerdo de como era
pero si quieres

contactame y te mando mi codigo

y de paso echas una mano de como conectarlo a un servidor cualquira
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:winsock con email

Publicado por Victor (1 intervención) el 14/12/2006 18:01:38
Hola, tenia un problema y mirando tu codigo lo solucione, aun no llego a la parte de enviar adjuntos, de todas maneras algo puede escontrar en http://www.vbip.com/winsock/winsock_simple_sender_02.asp

no lo revise, de esa pagina saque un codigo que estoy depurando, pero es otro ejemplo.

Saludos

Victor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:winsock con email-FORMATO

Publicado por PAOLA ROJAS DAVILA (1 intervención) el 20/02/2007 16:35:16
HE USADO EL winsock PARA ENVIAR MAIL, PERO QUIERO SABER COMO HAGO PARA DARLE FORMATO AL TEXTO QUE ENVIO ... HELP ME PLEASE !!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar