Enviar correo smtp

07/06/2006 - 09:47 por Rafa | Informe spam
Buenos dias
Tengo un problema al enviar un correo a traves de un servidor de correo
smtp, tanto desde una aplicacion windows como una aplicacion web, he probado
con el metodo simple, o sea sin auntenticar al remitente, como
autenticandolo, con el metodo cdo y con el metodo fields y no me funciona
ninguno, aqui les pego las diferente rutinas
'metodo simple:
Imports System.Web.Mail 'esto en todos los mtdos
Dim MyEmail As New MailMessage
Try
'Dim i As Int16
MyEmail.From = "remitente@serversmtp.com"
MyEmail.To = "destinatario@serversmtp.com"
MyEmail.Cc = ""
MyEmail.Subject = "Prueba Envio correo en Windows"
MyEmail.Body = "Esto es una Prueba si te llega avisame"

MyEmail.Priority = MailPriority.High
SmtpMail.SmtpServer = "192.168.1.200"
SmtpMail.Send(MyEmail)
'msgError("Su E-mail ha sido enviado correctamente ")

Catch ex As Exception
txtMensaje.Text = "Excepción: " & ex.Message
Do Until (ex.InnerException Is Nothing)
txtMensaje.Text = txtMensaje.Text & ex.InnerException.ToString()
ex = ex.InnerException
Loop
End Try

'metodo CDO
Const ConfigNamespace As String = _
"http://schemas.microsoft.com/cdo/co...ion/"
Dim oMsg As New CDO.Message
Dim iConfig As New CDO.Configuration
Dim Flds As ADODB.Fields = iConfig.Fields
Try
With Flds
.Item(ConfigNamespace & "smtpserver").Value = "192.168.1.200"
.Item(ConfigNamespace & "smtpserverport").Value = 25
.Item(ConfigNamespace & "sendusing").Value = _
CDO.CdoSendUsing.cdoSendUsingPort
.Item(ConfigNamespace & "sendusername").Value = "user"
.Item(ConfigNamespace & "sendpassword").Value = "pwd"
.Item(ConfigNamespace & "smtpauthenticate").Value = _
CDO.CdoProtocolsAuthentication.cdoBasic
.Update()
End With
With oMsg
.Configuration = iConfig
.From = "remitente@serversmtp.com"
.To = "destino@serversmtp.com"
.Subject = "Test CDO con VB.NET"
.TextBody = "Esto es una prueba si te llega avisame"
.Send()
End With
Catch ex As Exception
txtMensaje.Text = "Excepción: " & ex.Message
Do Until (ex.InnerException Is Nothing)
txtMensaje.Text = txtMensaje.Text & ex.InnerException.ToString()
ex = ex.InnerException
Loop
End Try
oMsg = Nothing
iConfig = Nothing

'metodo fields
Const ConfigNamespace As String = _
"http://schemas.microsoft.com/cdo/co...ion/"
Dim oMsg As New System.Web.Mail.MailMessage
Dim Flds As System.Collections.IDictionary
Flds = oMsg.Fields
With Flds
.Add(ConfigNamespace & "smtpserver", "192.168.1.200")
.Add(ConfigNamespace & "smtpserverport", 25)
.Add(ConfigNamespace & "sendusing", 2)
.Add(ConfigNamespace & "sendusername", "user")
.Add(ConfigNamespace & "sendpassword", "pwd")
.Add(ConfigNamespace & "smtpauthenticate", 1)
End With
With oMsg
.From = "Remitente@serversmtp.com"
.To = "destino@serversmtp.com"
.Subject = "Test MailMessage.Fields con VB.NET"
.Body = "Esto es una prueba, si te llega avisame"
End With
Try
System.Web.Mail.SmtpMail.Send(oMsg)
Catch ex As Exception
txtMensaje.Text = "Excepción: " & ex.Message
Do Until (ex.InnerException Is Nothing)
txtMensaje.Text = txtMensaje.Text & ex.InnerException.ToString()
ex = ex.InnerException
Loop
End Try


El mensaje que me tira es el siguiente:
Excepción: No se puede obtener acceso al objeto
'CDO.Message'.System.Reflection.TargetInvocationException: Se inició una
excepción en el destino de la invocación. >
System.Runtime.InteropServices.COMException (0x80040211): No se pudo enviar
el mensaje al servidor SMTP. El código de error de transporte fue 0x800ccc15.
La respuesta del servidor fue not available

He de decir q si abro outlook mando y recibo correos sin problemas
¿Alguien tiene alguna idea de a que se puede deber este error?¿Necesito
tener instalado el framework en el servidor smtp?
Esto ya lo he hecho en otros lugares y nunca he tenido problemas he estado
buscando información pero no encuentro nada, solo este fallo con outlook pero
a mi outlook me funciona ok.
Ayudadme a acabar con mi desesperacion GRACIAS.

Preguntas similare

Leer las respuestas

#1 Pep
07/06/2006 - 12:38 | Informe spam
Hola Rafa,
Si estas hablando de System.web... se supone que estas en FrameWork 1.1
Dale una ojeada a : http://msmvps.com/blogs/peplluis/ar...90575.aspx
Recuerda que en Visual Studio 2005, el espacio de nombres System.Web.. esta
"Deprecated"
Pep,

"Rafa" escribió en el mensaje
news:
Buenos dias
Tengo un problema al enviar un correo a traves de un servidor de correo
smtp, tanto desde una aplicacion windows como una aplicacion web, he
probado
con el metodo simple, o sea sin auntenticar al remitente, como
autenticandolo, con el metodo cdo y con el metodo fields y no me funciona
ninguno, aqui les pego las diferente rutinas
'metodo simple:
Imports System.Web.Mail 'esto en todos los mtdos
Dim MyEmail As New MailMessage
Try
'Dim i As Int16
MyEmail.From = ""
MyEmail.To = ""
MyEmail.Cc = ""
MyEmail.Subject = "Prueba Envio correo en Windows"
MyEmail.Body = "Esto es una Prueba si te llega avisame"

MyEmail.Priority = MailPriority.High
SmtpMail.SmtpServer = "192.168.1.200"
SmtpMail.Send(MyEmail)
'msgError("Su E-mail ha sido enviado correctamente ")

Catch ex As Exception
txtMensaje.Text = "Excepción: " & ex.Message
Do Until (ex.InnerException Is Nothing)
txtMensaje.Text = txtMensaje.Text & ex.InnerException.ToString()
ex = ex.InnerException
Loop
End Try

'metodo CDO
Const ConfigNamespace As String = _
"http://schemas.microsoft.com/cdo/co...ion/"
Dim oMsg As New CDO.Message
Dim iConfig As New CDO.Configuration
Dim Flds As ADODB.Fields = iConfig.Fields
Try
With Flds
.Item(ConfigNamespace & "smtpserver").Value = "192.168.1.200"
.Item(ConfigNamespace & "smtpserverport").Value = 25
.Item(ConfigNamespace & "sendusing").Value = _
CDO.CdoSendUsing.cdoSendUsingPort
.Item(ConfigNamespace & "sendusername").Value = "user"
.Item(ConfigNamespace & "sendpassword").Value = "pwd"
.Item(ConfigNamespace & "smtpauthenticate").Value = _
CDO.CdoProtocolsAuthentication.cdoBasic
.Update()
End With
With oMsg
.Configuration = iConfig
.From = ""
.To = ""
.Subject = "Test CDO con VB.NET"
.TextBody = "Esto es una prueba si te llega avisame"
.Send()
End With
Catch ex As Exception
txtMensaje.Text = "Excepción: " & ex.Message
Do Until (ex.InnerException Is Nothing)
txtMensaje.Text = txtMensaje.Text & ex.InnerException.ToString()
ex = ex.InnerException
Loop
End Try
oMsg = Nothing
iConfig = Nothing

'metodo fields
Const ConfigNamespace As String = _
"http://schemas.microsoft.com/cdo/co...ion/"
Dim oMsg As New System.Web.Mail.MailMessage
Dim Flds As System.Collections.IDictionary
Flds = oMsg.Fields
With Flds
.Add(ConfigNamespace & "smtpserver", "192.168.1.200")
.Add(ConfigNamespace & "smtpserverport", 25)
.Add(ConfigNamespace & "sendusing", 2)
.Add(ConfigNamespace & "sendusername", "user")
.Add(ConfigNamespace & "sendpassword", "pwd")
.Add(ConfigNamespace & "smtpauthenticate", 1)
End With
With oMsg
.From = ""
.To = ""
.Subject = "Test MailMessage.Fields con VB.NET"
.Body = "Esto es una prueba, si te llega avisame"
End With
Try
System.Web.Mail.SmtpMail.Send(oMsg)
Catch ex As Exception
txtMensaje.Text = "Excepción: " & ex.Message
Do Until (ex.InnerException Is Nothing)
txtMensaje.Text = txtMensaje.Text & ex.InnerException.ToString()
ex = ex.InnerException
Loop
End Try


El mensaje que me tira es el siguiente:
Excepción: No se puede obtener acceso al objeto
'CDO.Message'.System.Reflection.TargetInvocationException: Se inició una
excepción en el destino de la invocación. >
System.Runtime.InteropServices.COMException (0x80040211): No se pudo
enviar
el mensaje al servidor SMTP. El código de error de transporte fue
0x800ccc15.
La respuesta del servidor fue not available

He de decir q si abro outlook mando y recibo correos sin problemas
¿Alguien tiene alguna idea de a que se puede deber este error?¿Necesito
tener instalado el framework en el servidor smtp?
Esto ya lo he hecho en otros lugares y nunca he tenido problemas he estado
buscando información pero no encuentro nada, solo este fallo con outlook
pero
a mi outlook me funciona ok.
Ayudadme a acabar con mi desesperacion GRACIAS.

Respuesta Responder a este mensaje
#2 Alberto Poblacion
07/06/2006 - 12:50 | Informe spam
"Rafa" wrote in message
news:
¿Necesito tener instalado el framework en el servidor smtp?



No. De hecho, el servidor SMTP podría tener un sistema operativo para el
que no exista .Net.

'CDO.Message'.System.Reflection.TargetInvocationException: Se inició una
excepción en el destino de la invocación.



Suele salir un error de este tipo cuando no está bien instalado el CDO
en la máquina desde la que envías el correo.

He de decir q si abro outlook mando y recibo correos sin problemas



Si, pero Outlook no utiliza CDO.

Estás usando System.Web.Mail, que se considera obsoleto. En la versión
2.0 del Framework viene System.Net.Mail, que puede enviar correo
directamente con smtp, sin pasar por CDO, con lo que se evitan estos
problemas.
Respuesta Responder a este mensaje
#3 Rafa
07/06/2006 - 17:34 | Informe spam
Gracias a los dos, pero ya lo he solucionado
Pep, si estoy utilizando la version 1.1 de framework, si estuviera con la 2
no me ejecutaria el codigo
Alberto. Efectivamente mi servidor smtp no tiene instalado el framework

Bueno el problema era, por si a alguien le sirve de ayuda porque seguramente
tambien hubiera fallado con la version 2 del framework, el antivirus McAffe
Viruscan q tiene una propiedad q bloquea el puerto 25 para los gusanos de
envio masivo de correo, se le deshabilita y funciona perfectamente
Hasta Luego

"Rafa" escribió:

Buenos dias
Tengo un problema al enviar un correo a traves de un servidor de correo
smtp, tanto desde una aplicacion windows como una aplicacion web, he probado
con el metodo simple, o sea sin auntenticar al remitente, como
autenticandolo, con el metodo cdo y con el metodo fields y no me funciona
ninguno, aqui les pego las diferente rutinas
'metodo simple:
Imports System.Web.Mail 'esto en todos los mtdos
Dim MyEmail As New MailMessage
Try
'Dim i As Int16
MyEmail.From = ""
MyEmail.To = ""
MyEmail.Cc = ""
MyEmail.Subject = "Prueba Envio correo en Windows"
MyEmail.Body = "Esto es una Prueba si te llega avisame"

MyEmail.Priority = MailPriority.High
SmtpMail.SmtpServer = "192.168.1.200"
SmtpMail.Send(MyEmail)
'msgError("Su E-mail ha sido enviado correctamente ")

Catch ex As Exception
txtMensaje.Text = "Excepción: " & ex.Message
Do Until (ex.InnerException Is Nothing)
txtMensaje.Text = txtMensaje.Text & ex.InnerException.ToString()
ex = ex.InnerException
Loop
End Try

'metodo CDO
Const ConfigNamespace As String = _
"http://schemas.microsoft.com/cdo/co...ion/"
Dim oMsg As New CDO.Message
Dim iConfig As New CDO.Configuration
Dim Flds As ADODB.Fields = iConfig.Fields
Try
With Flds
.Item(ConfigNamespace & "smtpserver").Value = "192.168.1.200"
.Item(ConfigNamespace & "smtpserverport").Value = 25
.Item(ConfigNamespace & "sendusing").Value = _
CDO.CdoSendUsing.cdoSendUsingPort
.Item(ConfigNamespace & "sendusername").Value = "user"
.Item(ConfigNamespace & "sendpassword").Value = "pwd"
.Item(ConfigNamespace & "smtpauthenticate").Value = _
CDO.CdoProtocolsAuthentication.cdoBasic
.Update()
End With
With oMsg
.Configuration = iConfig
.From = ""
.To = ""
.Subject = "Test CDO con VB.NET"
.TextBody = "Esto es una prueba si te llega avisame"
.Send()
End With
Catch ex As Exception
txtMensaje.Text = "Excepción: " & ex.Message
Do Until (ex.InnerException Is Nothing)
txtMensaje.Text = txtMensaje.Text & ex.InnerException.ToString()
ex = ex.InnerException
Loop
End Try
oMsg = Nothing
iConfig = Nothing

'metodo fields
Const ConfigNamespace As String = _
"http://schemas.microsoft.com/cdo/co...ion/"
Dim oMsg As New System.Web.Mail.MailMessage
Dim Flds As System.Collections.IDictionary
Flds = oMsg.Fields
With Flds
.Add(ConfigNamespace & "smtpserver", "192.168.1.200")
.Add(ConfigNamespace & "smtpserverport", 25)
.Add(ConfigNamespace & "sendusing", 2)
.Add(ConfigNamespace & "sendusername", "user")
.Add(ConfigNamespace & "sendpassword", "pwd")
.Add(ConfigNamespace & "smtpauthenticate", 1)
End With
With oMsg
.From = ""
.To = ""
.Subject = "Test MailMessage.Fields con VB.NET"
.Body = "Esto es una prueba, si te llega avisame"
End With
Try
System.Web.Mail.SmtpMail.Send(oMsg)
Catch ex As Exception
txtMensaje.Text = "Excepción: " & ex.Message
Do Until (ex.InnerException Is Nothing)
txtMensaje.Text = txtMensaje.Text & ex.InnerException.ToString()
ex = ex.InnerException
Loop
End Try


El mensaje que me tira es el siguiente:
Excepción: No se puede obtener acceso al objeto
'CDO.Message'.System.Reflection.TargetInvocationException: Se inició una
excepción en el destino de la invocación. >
System.Runtime.InteropServices.COMException (0x80040211): No se pudo enviar
el mensaje al servidor SMTP. El código de error de transporte fue 0x800ccc15.
La respuesta del servidor fue not available

He de decir q si abro outlook mando y recibo correos sin problemas
¿Alguien tiene alguna idea de a que se puede deber este error?¿Necesito
tener instalado el framework en el servidor smtp?
Esto ya lo he hecho en otros lugares y nunca he tenido problemas he estado
buscando información pero no encuentro nada, solo este fallo con outlook pero
a mi outlook me funciona ok.
Ayudadme a acabar con mi desesperacion GRACIAS.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida