Antes de nada saludos a todos, ya que es la 1ª vez q posteo en este foro.
Y perdón si mi cuestión ya ha salido en alguno ocasión, yo la he buscado y no la encuentro.
Me baje un programita para enviar correo a traves del smtp, sin pasar por ningún programa de correo, como yo lo hacía hasta ahora. El programa va estupendo, pero no consigo enviar a direcciones que no sean de mi dominio.
El mensaje que devuelve el servidor es "Relay access denied", aunque no da error el programa.. Me imagino que debe de ser cosa de la autentificación en el servidor, pero no se donde ponersela con los controles que uso.
Ahora pongo un trozo del codigo original que me baje, no lo pongo todo para no extenderme demasiado, si falta ya me lo direis, y haber si alguien me dice que me falta y donde. Gracias por adelantado.
Codigo:
Public Sub Enviar_Click()
'CFG es de un tipo registro creado en el programa
If Cfg.Smtp = "" Or Cfg.De = "" Or Cfg.Para = "" Then
MsgBox ("Configuración incompleta")
Else
' Inicializo el mensaje
Cabecera(1) = "HELO Atawalabachala"
Cabecera(2) = "MAIL FROM: <" & Config.De.Text & ">"
Cabecera(3) = "RCPT TO: <" & Config.Para.Text & ">"
Cabecera(4) = "DATA"
Cabecera(5) = "From: " & Config.De.Text
Cabecera(6) = "To: " & Config.Para.Text
Cabecera(7) = "Subject: " & Asunto.Text
Cabecera(8) = "DATE: "
Cabecera(9) = "MIME-Version: 1.0"
Cabecera(10) = "Content-Type: multipart/mixed;"
Boundary = "----=_NextPart_000_0002_01BD22EE.C1291DA0"
Cabecera(11) = Chr(9) & "boundary=""" & Boundary & """"
Cabecera(12) = "X-Priority: 3"
Cabecera(13) = "X-MSMail - Priority: Normal"
Cabecera(14) = "X-MimeOLE: Producido por Raul Gimenez V1.0"
Cabecera(15) = ""
Cabecera(16) = "Esto es un mensaje multiparte en formato MIME"
Cabecera(17) = ""
Cabecera(18) = "--" & Boundary
Cabecera(19) = "Content-Type: text/plain;"
Cabecera(20) = Chr(9) & "charset=""x-user-defined"""
Cabecera(21) = "Content-Transfer-Encoding: 8bit"
Cabecera(22) = ""
Cabecera(23) = MensajeSaliente.Text
Cabecera(24) = ""
InicioBoundaryAnexo = 24
Cabecera(25) = "--" & Boundary
Cabecera(26) = "Content-Type: application/octet-stream;"
Cabecera(27) = Chr(9) & "Name=""" & Cfg.FicheroAnexo & """"
Cabecera(28) = "Content-Disposition: attachment;"
Cabecera(29) = Chr(9) & "filename=""" & Cfg.FicheroAnexo & """"
Cabecera(30) = "Content-Transfer-Encoding: base64"
InicioAnexo = 30
Cabecera(31) = ""
If Not ConexionEstablecida Then
' Si es la primera vez que envio un mensaje ,
' establezco la conexión.
' El mensaje se enviará en el evento "Connect"
Sck.Protocol = sckTCPProtocol
Sck.RemotePort = 25
Sck.RemoteHost = Cfg.Smtp
Sck.Connect
Else
' Si no es la primera vez, comienzo el envio del mensaje
' El resto del mensaje se enviará en el evento "SendComplete"
' NOTA: Me salto el comando HELO
Paso = 2
EnviarDatos (Cabecera(Paso) & vbCrLf)
Progreso.Value = 10
End If
End If
End Sub
Function EnviarDatos(Cadena As String)
correo.Sck.SendData (Cadena)
' Este temporizador sirve de "TimeOut"
' Si pasan X segundos y aun no hay respuesta se genera un mensaje de error
correo.TimeOut.Enabled = True
DoEvents
End Function
/CODIGO
También hay más eventos Sck_DataArrival , Sck_SendComplete() ..., pero no creo que haga falta ponerlos.
Gracias de nuevo
Y perdón si mi cuestión ya ha salido en alguno ocasión, yo la he buscado y no la encuentro.
Me baje un programita para enviar correo a traves del smtp, sin pasar por ningún programa de correo, como yo lo hacía hasta ahora. El programa va estupendo, pero no consigo enviar a direcciones que no sean de mi dominio.
El mensaje que devuelve el servidor es "Relay access denied", aunque no da error el programa.. Me imagino que debe de ser cosa de la autentificación en el servidor, pero no se donde ponersela con los controles que uso.
Ahora pongo un trozo del codigo original que me baje, no lo pongo todo para no extenderme demasiado, si falta ya me lo direis, y haber si alguien me dice que me falta y donde. Gracias por adelantado.
Codigo:
Public Sub Enviar_Click()
'CFG es de un tipo registro creado en el programa
If Cfg.Smtp = "" Or Cfg.De = "" Or Cfg.Para = "" Then
MsgBox ("Configuración incompleta")
Else
' Inicializo el mensaje
Cabecera(1) = "HELO Atawalabachala"
Cabecera(2) = "MAIL FROM: <" & Config.De.Text & ">"
Cabecera(3) = "RCPT TO: <" & Config.Para.Text & ">"
Cabecera(4) = "DATA"
Cabecera(5) = "From: " & Config.De.Text
Cabecera(6) = "To: " & Config.Para.Text
Cabecera(7) = "Subject: " & Asunto.Text
Cabecera(8) = "DATE: "
Cabecera(9) = "MIME-Version: 1.0"
Cabecera(10) = "Content-Type: multipart/mixed;"
Boundary = "----=_NextPart_000_0002_01BD22EE.C1291DA0"
Cabecera(11) = Chr(9) & "boundary=""" & Boundary & """"
Cabecera(12) = "X-Priority: 3"
Cabecera(13) = "X-MSMail - Priority: Normal"
Cabecera(14) = "X-MimeOLE: Producido por Raul Gimenez V1.0"
Cabecera(15) = ""
Cabecera(16) = "Esto es un mensaje multiparte en formato MIME"
Cabecera(17) = ""
Cabecera(18) = "--" & Boundary
Cabecera(19) = "Content-Type: text/plain;"
Cabecera(20) = Chr(9) & "charset=""x-user-defined"""
Cabecera(21) = "Content-Transfer-Encoding: 8bit"
Cabecera(22) = ""
Cabecera(23) = MensajeSaliente.Text
Cabecera(24) = ""
InicioBoundaryAnexo = 24
Cabecera(25) = "--" & Boundary
Cabecera(26) = "Content-Type: application/octet-stream;"
Cabecera(27) = Chr(9) & "Name=""" & Cfg.FicheroAnexo & """"
Cabecera(28) = "Content-Disposition: attachment;"
Cabecera(29) = Chr(9) & "filename=""" & Cfg.FicheroAnexo & """"
Cabecera(30) = "Content-Transfer-Encoding: base64"
InicioAnexo = 30
Cabecera(31) = ""
If Not ConexionEstablecida Then
' Si es la primera vez que envio un mensaje ,
' establezco la conexión.
' El mensaje se enviará en el evento "Connect"
Sck.Protocol = sckTCPProtocol
Sck.RemotePort = 25
Sck.RemoteHost = Cfg.Smtp
Sck.Connect
Else
' Si no es la primera vez, comienzo el envio del mensaje
' El resto del mensaje se enviará en el evento "SendComplete"
' NOTA: Me salto el comando HELO
Paso = 2
EnviarDatos (Cabecera(Paso) & vbCrLf)
Progreso.Value = 10
End If
End If
End Sub
Function EnviarDatos(Cadena As String)
correo.Sck.SendData (Cadena)
' Este temporizador sirve de "TimeOut"
' Si pasan X segundos y aun no hay respuesta se genera un mensaje de error
correo.TimeOut.Enabled = True
DoEvents
End Function
/CODIGO
También hay más eventos Sck_DataArrival , Sck_SendComplete() ..., pero no creo que haga falta ponerlos.
Gracias de nuevo