Aquí te paso una clase que hice que utiliza los objetos propios de .NET 2.0 Te permite usar credenciales de seguridad Espero te sea util
Ing. Diego M. Basélica e-mail: [EMAIL PROTECTED] UpSoft Sistemas Informáticos Rafael Nuñez 3498 (X5009CFO) Córdoba, Argentina Tel/Fax: 0351-4814812 (rot.) www.upsoft.com.ar Public Class EMail Private mSMTPServer As String Private mSMTPPort As Integer Private mUser As String Private mPassword As String Private mRequiredAutentication As Boolean Private mIsBodyHtml As Boolean Sub New() mSMTPServer = "" mSMTPPort = 25 mUser = "" mPassword = "" mRequiredAutentication = False mIsBodyHtml = True End Sub Sub New(ByVal pSMTPServer As String, Optional ByVal pSMTPPort As Integer = 25 _ , Optional ByVal pRequiredAutentication As Boolean = False _ , Optional ByVal pUser As String = "", Optional ByVal pPassword As String = "" _ , Optional ByVal pIsBodyHtml As Boolean = True) mSMTPServer = pSMTPServer mSMTPPort = pSMTPPort mUser = pUser mPassword = pPassword mRequiredAutentication = pRequiredAutentication mIsBodyHtml = pIsBodyHtml End Sub '''----------------------------------------------------------------------------- ''' <summary> ''' Servidor de envio SMTP ''' </summary> ''' <value></value> ''' <remarks></remarks> ''' <history> ''' [dbaselica] 16/09/2005 Created ''' </history> '''----------------------------------------------------------------------------- Public Property SMTPServer() As String Get Return mSMTPServer End Get Set(ByVal Value As String) mSMTPServer = Value End Set End Property ''' <summary> ''' Puerto de comunicación SMTP ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> Public Property SMTPPort() As Integer Get Return mSMTPPort End Get Set(ByVal value As Integer) mSMTPPort = value End Set End Property ''' <summary> ''' Se indica si se enviaran credenciales de autentificación o no al enviar el mail ''' Si se indica True, se deberán indicar el Usuario y la Contraseña ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> Public Property RequiredAutentication() As Boolean Get Return mRequiredAutentication End Get Set(ByVal value As Boolean) mRequiredAutentication = value End Set End Property ''' <summary> ''' Contraseña para la autentificación del envio de e-mail ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> Public Property Password() As String Get Return mPassword End Get Set(ByVal value As String) mPassword = value End Set End Property ''' <summary> ''' Usuario para la autentificación del envio de e-mail ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> Public Property User() As String Get Return mUser End Get Set(ByVal value As String) mUser = value End Set End Property ''' <summary> ''' Indica si el cuerpo del mail es enviado como HTML o texto plano. ''' Por defecto se envia como HTML ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> Public Property IsBodyHtml() As Boolean Get Return mIsBodyHtml End Get Set(ByVal value As Boolean) mIsBodyHtml = value End Set End Property ''' <summary> ''' Carga la informacion de credenciales para envio de mail ''' </summary> ''' <param name="pSmtpClient"></param> ''' <remarks></remarks> Private Sub LoadCredentials(ByVal pSmtpClient As SmtpClient) Try If mRequiredAutentication Then 'Autentificaciónn pSmtpClient.UseDefaultCredentials = False pSmtpClient.Credentials = New System.Net.NetworkCredential(mUser, mPassword) Else pSmtpClient.UseDefaultCredentials = True End If Catch ex As Exception Throw New Exception("No se pudo cargar la credencial para el envio del e-mail", ex) End Try End Sub ''' <summary> ''' Permite cargar una lista de destinatarios de mail separados por ; al campo CC ''' </summary> ''' <param name="pMessage"></param> ''' <param name="pCC"></param> ''' <remarks></remarks> Private Sub LoadMultipleCC(ByVal pMessage As MailMessage, ByVal pCC As String) If pCC = "" Then Return End If Try Dim aCC As String() = Split(pCC, ";") pMessage.CC.Clear() For Each mCC As String In aCC pMessage.CC.Add(New MailAddress(mCC)) Next Catch ex As Exception Throw New Exception("Error al cargar la lista de destinatarios (CC)", ex) End Try End Sub ''' <summary> ''' Permite cargar una lista de destinatarios de mail separados por ; al campo Bcc ''' </summary> ''' <param name="pMessage"></param> ''' <param name="pBcc"></param> ''' <remarks></remarks> Private Sub LoadMultipleBcc(ByVal pMessage As MailMessage, ByVal pBcc As String) If pBcc = "" Then Return End If Try Dim aBcc As String() = Split(pBcc, ";") pMessage.Bcc.Clear() For Each mBcc As String In aBcc pMessage.Bcc.Add(New MailAddress(mBcc)) Next Catch ex As Exception Throw New Exception("Error al cargar la lista de destinatarios (Bcc)", ex) End Try End Sub ''' <summary> ''' Permite cargar una lista de destinatarios de mail separados por ; al campo TO ''' </summary> ''' <param name="pMessage"></param> ''' <param name="pTO"></param> ''' <remarks></remarks> Private Sub LoadMultipleTo(ByVal pMessage As MailMessage, ByVal pTO As String) If pTO = "" Then Return End If Try Dim aTO As String() = Split(pTO, ";") pMessage.To.Clear() For Each mTO As String In aTO pMessage.To.Add(New MailAddress(mTO)) Next Catch ex As Exception Throw New Exception("Error al cargar la lista de destinatarios (TO)", ex) End Try End Sub ''' <summary> ''' Envia un e-mail sin indicar el origen ''' </summary> ''' <param name="pto">Destinatario del e-mail. Si son varios deben venir separados por ;</param> ''' <param name="psubject">Asunto del mail</param> ''' <param name="pbody">Mensaje del mail</param> ''' <remarks></remarks> ''' <history> ''' [dbaselica] 16/09/2005 Created ''' </history> '''----------------------------------------------------------------------------- Public Sub SendMail(ByVal pTo As String, ByVal pSubject As String, ByVal pBody As String) Dim message As New MailMessage() message.From = New MailAddress("[EMAIL PROTECTED]") 'message.To.Add(New MailAddress(pTo)) LoadMultipleTo(message, pTo) message.Subject = pSubject message.IsBodyHtml = mIsBodyHtml message.Body = pBody Try Dim emailClient As New SmtpClient(SMTPServer, SMTPPort) LoadCredentials(emailClient) emailClient.Send(message) Catch ex As Exception Throw ex End Try End Sub ''''---------------------------------------------------------------------------- - '''' <summary> '''' Envia un e-mail indicando el origen '''' </summary> '''' <param name="pfrom">Originador del e-mail</param> '''' <param name="pto">Destinatario del e-mail. Si son varios deben venir separados por ;</param> '''' <param name="psubject">Asunto del mail</param> '''' <param name="pbody">Mensaje del mail</param> '''' <remarks></remarks> '''' <history> '''' [dbaselica] 16/09/2005 Created '''' </history> ''''---------------------------------------------------------------------------- - Public Sub SendMail(ByVal pFrom As String, ByVal pTo As String, ByVal pSubject As String, ByVal pBody As String) Dim message As New MailMessage() message.From = New MailAddress(pFrom) 'message.To.Add(New MailAddress(pTo)) LoadMultipleTo(message, pTo) message.Subject = pSubject message.IsBodyHtml = mIsBodyHtml message.Body = pBody Try Dim emailClient As New SmtpClient(SMTPServer, SMTPPort) LoadCredentials(emailClient) emailClient.Send(message) Catch ex As Exception Throw ex End Try End Sub ''''---------------------------------------------------------------------------- - '''' <summary> '''' Envia un e-mail con copia '''' </summary> '''' <param name="pfrom">Originador del e-mail</param> '''' <param name="pto">Destinatario del e-mail. Si son varios deben venir separados por ;</param> '''' <param name="pcc">Destinatario de la copia del mail. Si son varios deben venir separados por ;</param> '''' <param name="psubject">Asunto del mail</param> '''' <param name="pbody">Mensaje del mail</param> '''' <remarks></remarks> '''' <history> '''' [dbaselica] 16/09/2005 Created '''' </history> ''''---------------------------------------------------------------------------- - Public Sub SendMail(ByVal pFrom As String, ByVal pTo As String, ByVal pCC As String, ByVal pSubject As String, ByVal pBody As String) Dim message As New MailMessage() message.From = New MailAddress(pFrom) 'message.To.Add(New MailAddress(pTo)) 'message.CC.Add(New MailAddress(pCC)) LoadMultipleTo(message, pTo) LoadMultipleCC(message, pCC) message.Subject = pSubject message.IsBodyHtml = mIsBodyHtml message.Body = pBody Try Dim emailClient As New SmtpClient(SMTPServer, SMTPPort) LoadCredentials(emailClient) emailClient.Send(message) Catch ex As Exception Throw ex End Try End Sub ''''---------------------------------------------------------------------------- - '''' <summary> '''' Envia un e-mail con copia oculta '''' </summary> '''' <param name="pfrom">Originador del e-mail</param> '''' <param name="pTo">Destinatario del e-mail. Si son varios deben venir separados por ;</param> '''' <param name="pcc">Destinatario de la copia del mail. Si son varios deben venir separados por ;</param> '''' <param name="pbcc">Destinatario de la copia oculta del mail. Si son varios deben venir separados por ;</param> '''' <param name="psubject">Asunto del mail</param> '''' <param name="pbody">Mensaje del mail</param> '''' <remarks></remarks> '''' <history> '''' [dbaselica] 16/09/2005 Created '''' </history> ''''---------------------------------------------------------------------------- - Public Sub SendMail(ByVal pFrom As String, ByVal pTo As String, ByVal pCC As String, ByVal pBCC As String, ByVal pSubject As String, ByVal pBody As String) Dim message As New MailMessage() message.From = New MailAddress(pFrom) 'message.To.Add(New MailAddress(pTo)) 'message.CC.Add(New MailAddress(pCC)) 'message.Bcc.Add(New MailAddress(pBCC)) LoadMultipleTo(message, pTo) LoadMultipleCC(message, pCC) LoadMultipleBcc(message, pBCC) message.Subject = pSubject message.IsBodyHtml = mIsBodyHtml message.Body = pBody Try Dim emailClient As New SmtpClient(SMTPServer, SMTPPort) LoadCredentials(emailClient) emailClient.Send(message) Catch ex As Exception Throw ex End Try End Sub ''''---------------------------------------------------------------------------- - '''' <summary> '''' Envia un e-mail con archivos adjuntos '''' </summary> '''' <param name="pfrom">Originador del e-mail</param> '''' <param name="pto">Destinatario del e-mail. Si son varios deben venir separados por ;</param> '''' <param name="pcc">Destinatario de la copia del mail. Si son varios deben venir separados por ;</param> '''' <param name="pbcc">Destinatario de la copia oculta del mail. Si son varios deben venir separados por ;</param> '''' <param name="psubject">Asunto del mail</param> '''' <param name="pbody">Mensaje del mail</param> '''' <param name="pattachments">Array de pasos de archivos a enviar</param> '''' <param name="pdeleteAttachments">Indica si debemos borrar o no los archivos aduntos luego de enviarlos</param> '''' <returns></returns> '''' <remarks></remarks> '''' <history> '''' [dbaselica] 16/09/2005 Created '''' </history> ''''---------------------------------------------------------------------------- - Public Function SendMail(ByVal pFrom As String, ByVal pTo As String, ByVal pCC As String, ByVal pBCC As String, ByVal pSubject As String, ByVal pBody As String, ByVal attachments As String(), ByVal deleteAttachments As Boolean) As String Dim returnMessage As String = "" Dim message As New MailMessage() message.From = New MailAddress(pFrom) LoadMultipleTo(message, pTo) LoadMultipleCC(message, pCC) LoadMultipleBcc(message, pBCC) message.Subject = pSubject message.IsBodyHtml = mIsBodyHtml message.Body = pBody 'Cargamos los adjuntos For i As Integer = 0 To attachments.Length - 1 Try If File.Exists(attachments(i)) Then message.Attachments.Add(New Attachment(attachments(i))) Else returnMessage += "ERROR: The file " + attachments(i) + " does not exist! " End If Catch e As Exception returnMessage += "ERROR: " + e.Message + " " End Try Next message.Body = returnMessage + pBody 'Enviar mail Try Dim emailClient As New SmtpClient(SMTPServer, SMTPPort) LoadCredentials(emailClient) emailClient.Send(message) returnMessage += " Mail Sent" Catch ex As Exception returnMessage += "ERROR: " + ex.Message 'Throw ex End Try 'Borrar Archivos If deleteAttachments Then For i As Integer = 0 To attachments.Length - 1 Try If File.Exists(attachments(i)) Then File.Delete(attachments(i)) returnMessage += " Attachments Deleted " Else returnMessage += "ERROR: The file " + attachments(i) + " does not exist, so it cannot be deleted. " End If Catch e As Exception returnMessage += "ERROR: " + e.Message End Try Next End If Return returnMessage End Function End Class -----Mensaje original----- De: puntonet@mug.org.ar [mailto:[EMAIL PROTECTED] En nombre de Gabriel Osorio Enviado el: Martes, 24 de Octubre de 2006 20:41 Para: puntonet List Member Asunto: [puntonet] Envio de mails Busca en el histórico de "asplist" del mug por: "enviar mail desde ASP con MAILTO al cargar una pagina". Seguro que algo te sirve Gabriel -----Original Message----- From: puntonet@mug.org.ar [mailto:[EMAIL PROTECTED] On Behalf Of Jorge García Sent: Tuesday, October 24, 2006 4:47 PM To: puntonet List Member Subject: [puntonet] Envio de mails Necesito enviar un mail desde una aplicación .Net. Traté de usar el CDO para configurar el servidor SMTP, pero el problema es que el servidor que quiero usar es un servidor externo (tengo el usuario y clave autorizado para conectarme pero no es un servidor exchange al que tengo acceso localmente sino que es un servidor web). Traté de configurar el servidor en el IIS y le pase los parámetros de conexion mediante los Fields del objeto CDO pero igualmente no se conecta (use un ejemplo que encontré en una página, lo copio abajo) Si alguien me puede dar una idea de como hacer o decirme donde puedo bajar una dll que arme y envie un mail les agradezco. (El ejemplo está como un script web, mi aplicación es desktop pero lo que hice fue asignarle a mi objeto objMsg.Fields los valores como figuran en este ejemplo). set objMsg = CreateObject("CDO.Message") set objConf = CreateObject("CDO.Configuration") Set objFlds = objConf.Fields With objFlds .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 25 .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mail.yourhost.com" .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 2 .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "your-username" .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "your-password" .Update End With