Problemas para enviar e-mails a servidores fuera de mi dominio

Iniciado por Khorne666, 1 Agosto 2007, 10:34 AM

0 Miembros y 1 Visitante están viendo este tema.

Khorne666

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

ranslsad

Eso me paso ami, lo que pasa esque al servidor que le envias correo no aceptara correos sin identificacion, es decir tienes que registrar tu servidor SMTP en las cuentas de E-Mail (Ej: Hotmail)
Busca en google y seguro que encontras info!

Salu2

Ranslsad

Khorne666


Muchas gracias por contestar, acabo de estar buscando y por el momento no lo he encontrado, ahora tengo que salir, pero en un rato sigo con ello y te cuento que tal.

Lo unico es que no estoy seguro de si entiendo exactamente lo que me dices, lo de que el servidor no acepta mails sin identificación, esta clarisimo y seguramente será eso, pero lo que me dices de registrar mi servidor SMTP en las cuentas de e-mail???
Yo pensaba que en alguna parte le tendría que decir via código el user y pass de alguna cuenta existente en el SMTP que utilizo para enviar.

Saludos

ranslsad

No, tienes que Registrar tu servidor SMTP para que Hotmail acepte tus E-Mail y no los rechace.

Salu2

Ranslsad

Khorne666


Buenas otra vez;

He estado buscando bastante rato, y como bien diría Murphy, he encontrado la respuesta en varios lenguajes pero no en Vb, con winsock.
Lo más parecido que he visto es esto, aunque estáq en brasileño, se entiende:

;******************************************************************
  Para fazer o envio de e-mails no ASP.NET utilizamos as classes MailMessage e SMTPMail, a primeira para montar a mensagem a segunda para fazer o envio, ambas no namespace System.Web.Mail.

Porém para enviar o e-mail precisamos apontar um servidor SMTP, um servidor de envio de e-mails.

Alguns servidores SMTP permitem que e-mails sejam enviados livremente. Mas outros servidores exigem que seja feita uma autenticação para o envio de e-mails. Então, como fazer a autenticação para o envio de uma mensagem ?

Para fazermos a autenticação devemos preencher alguns campos especiais na mensagem, indicando a forma de autenticação, login e senha do usuário. Veja como fica a autenticação e envio de uma mensagem :

Dim msg As New MailMessage

msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserver", "mail.umServidor.com.br")
msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", 25)
msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusing", 2)
msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", 1)
msg.Fields.Add
("http://schemas.microsoft.com/cdo/configuration/sendusername", "umlogin")
msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "umasenha")

msg.To = txtdestinatario.Text
msg.From = "noreply@devaspnet.com.br"
msg.Body = "Bem vindo !"
msg.Subject = "Seja Bem vindo ao grupo devASPNet"
SmtpMail.SmtpServer = "mail.umServidor.com.br"
SmtpMail.Send(msg)
;*******************************************************************

He intentado cosas similares pero ni de coña, seguiré buscando y si encuentro algo os lo comento.

por otra parte si a alguien se le ocurre algo será bien recibido.

Un saludo

Khorne666


Perdón por mi ignorancia pero no estoy acostumbrado a realizar aplicaciones "que salgan a la web", hasta ahora todas eran domesticas, y no me queda claro lo que dices.
Te resumo el caso:

En el programa en cuestion yo le indico el servidor smtp q voy a usar, he probado con el particular (timofonica), el d mi cuenta del curro(un dominio particular) y otros con los que no tengo cuenta, la direccion que lo envia, que no importa si te la inventas y para quien va.
En teoria tanto mi cta de telefonica como la del kurro, requieren autentificacion, sino lo marco asi en el outlook no funciona.

Si me envio a la cuenta de mi curro, siempre funciona, da igual el smtp que use, pero a la de telefonica ni de coña, y los que intento enviar a otras direcciones tampoco.

En teoria con el programa que estoy haciendo habra q enviar mails a otras personas de mi grupo de trabajo, ya funciona sin problemas, y a gente de fuera, y aqui esta el problema.

Que servidor tendria q registrar ? y como ?

Porq perdon de nuevo si pregunta gilipolleces pero no se a q te refieres.

Muchas gracias

ranslsad

Haber, muchos servidores de E-Mail no aceptan correos sin identificacion (Hotmail, Yahoo y eso.) tonces vos lo que tendrias que hacer es buscar en google alguna guia de como registrar tu servidor SMTP (no programa) sino servidor, y registrarlo en tales servidores de correo para que te los acepte y los identifique...
Un poco lioso pero es asi.

Salu2

Ranslsad

Khorne666


Ok,muchas gracias por la informacion .

Lo busco y te comento.

ranslsad

oks, suerte
y si encuentras algo postealo aqui para que no se vuelva a producir el mismo caso :P

Salu2

Ranslsad

Khorne666


Por fin encontre una solución.

Muy buenas, después de intentar registrar mi servidor e incluso de intentar instalarme mi propio servidor de correo, y ver que me estaba complicando muchisimo, encontre este enlace:

http://www.ostrosoft.com/smtp_component.asp

En el te descargas un fichero donde viene una dll, un ocx y ejemlos de envio en varios lenguajes.
Si registras la dll puedes utilizar el codigo, y va de p. madre, he conseguido enviar mails a todas las direcciones que antes no podia.

Utiliza una referencia que no había visto nunca "OstroSoft Smtp Component", y con ella, en un codigo pequeñisimo hace lo que yo no podia en la ostia de lineas de código.

Aun no lo he adaptado a mi aplicación pero no creo que me cueste mucho.

Aunque primero quiero estar unas horas sin pensar para nada en un MALDITO CORREO ELECTRONICO.

Gracias a todos los que han leido el post y sobre todo a ti Ranslsad por guiarme.

Espero que esto sirva a los que os encontreis con el mismo problema.

Saludos y si algo no queda claro decidmelo por favor.