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









Reply via email to