Búsqueda personalizada

Aclaración

Este es un blog de apuntes universitarios. Creado por mí para compartir mis apuntes con ustedes. No es un curso, ni un tutorial. Muchas de las entradas son resúmenes, definiciones y síntesis. La mayoría tienen palabras técnicas.
Debido a esto, he tenido que cerrar los comentarios, espero sepan comprender que no puedo ampliar las más de 100 entradas de este blog ni explicar temas a todas las personas que entran cada día.
Muchas gracias por su atención.
Atte. Malw Dark






sábado 3 de julio de 2010

Enviar un email por Outlook 2007 (VB NET)

(Advertencia: Para utilizar interoperabilidad con outlook hace falta importar la ‘Microsoft Outlook 12.00 object Library’ en el proyecto)
El siguiente código es un sub que arma un email en outlook y lo envía (suponiendo que la seguridad del programa no lo detenga…). El código ya está probado y funciona efectivamente (si antes se configura outlook para no bloquear la ejecución de código – ver ‘centro de confianza’ en el programa para hacer eso).
 Public Sub Enviar_Email(ByVal AsuntoMail As String, ByVal CuerpoMail As String, ByVal EmailDestino As String)
           '
           Try
               Mi_Email = Mi_Mensajero.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem)
               Mi_Inspector = Mi_Email.GetInspector()
               '
               Mi_Email.Subject = AsuntoMail
               Mi_Email.Body = CuerpoMail
               Mi_Email.To = EmailDestino
               Mi_Email.Send()
               '
           Catch exy As Exception
               Throw exy
               Me.Cerrar(Mi_Email, True)
           End Try
           ''
       End Sub

Para usar el sub hace falta que en la clase que esté se declaren las siguientes variables:
Private WithEvents Mi_Mensajero As New Global.Microsoft.Office.Interop.Outlook.Application
Private Mi_Email As Microsoft.Office.Interop.Outlook.MailItem
Private Mi_Inspector As Global.Microsoft.Office.Interop.Outlook.Inspector

Y el siguiente manejador:
Sub Cerrar(ByVal Mensaje As Object, ByRef Cancel As Boolean) Handles Mi_Mensajero.ItemSend
            '
            If Object.ReferenceEquals(Mensaje, Me.Mi_Email) Then
                '
                Mi_Email = Nothing
                Mi_Inspector.Close(Microsoft.Office.Interop.Outlook.OlInspectorClose.olDiscard)
                Mi_Inspector = Nothing
                Mi_Mensajero.Quit()
                Mi_Mensajero = Nothing
                '
            End If
            ''
    End Sub

Utilicé esta forma de cerrarlo por que al escribir el código de manera lineal parecía cerrarse antes de acabar de mandar el mail. En los códigos que vi por internet no se hacía de esta manera, y tampoco declaraban el inspector, pero ninguno de ellos me funcionó.