CLR: .Net / Mono / Boo / Otros CLR > VB .NET

 Enviar Correos

<< < (2/2)

alexis17:
este es el codigo del segundo programa que les avia dicho, para que me funcionara tube que ponerle en comentario el codigo que estaba en el load que eso pregunaba por un servidor de correo, porque yo no estoy usando el iss yo uso es este Free SMTP Server

y cuando abri mi servidor de correo y envie el correo por el programa se veia qeu se enviaba pero cuando reviso mi correo no me llegan en las ip puse las ip de mi pc
 :rolleyes:

' © Microsoft Corporation. Reservados todos los derechos.
Imports System.Net.Mail
Imports System.Text
Imports System.ServiceProcess

Public Class MainForm
    Inherits System.Windows.Forms.Form

    Dim arlAttachments As ArrayList


    ''' <summary>
    ''' Controla el evento de clic del botón Browse. Utiliza un control OpenFileDialog para permitir al
    ''' usuario que busque los datos adjuntos que desea enviar, los cuales se agregan después a una lista de matrices de
    ''' objetos MailAttachment.
    '''  </summary>
    Private Sub Browse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Browse.Click
        With odlgAttachment
            .InitialDirectory = "C:\"
            .Filter = "All Files (*.*)|*.*|HTML Files (*.htm;*.html)|*.htm|Microsoft Mail Documents (*.msg)|*.msg|Word Documents (*.doc)|*.doc|Excel Files(*.xl*)|*.xl*|Excel Worksheets (*.xls)|*.xls|Excel Charts (*.xlc)|*.xlc|PowerPoint Presentations (*.ppt)|*.ppt|Text Files (*.txt)|*.txt"
            .FilterIndex = 1

            ' El control OpenFileDialog sólo contiene un botón Open y no un botón OK.
            ' Pero como no hay ninguna enumeración DialogResult.Open se utiliza DialogResult.OK.
            If .ShowDialog() = Windows.Forms.DialogResult.OK Then
                If IsNothing(arlAttachments) Then
                    arlAttachments = New ArrayList()

                    ' Borre el texto predeterminado "(No hay datos adjuntos)" de la vista de lista
                    Attachments.Items.Clear()
                End If
                arlAttachments.Add(New Attachment(.FileName))

                ' Sólo desea mostrar el nombre del archivo. La propiedad OpenFileDialog.FileName
                ' contiene la ruta de acceso completa, así que divida la ruta e invierta el orden
                ' para obtener la primera cadena de la matriz, que es justamente el nombre del archivo.
                Dim strFileName() As String = .FileName.Split(New Char() {CChar("\")})
                System.Array.Reverse(strFileName)
                Attachments.Items.Add(strFileName(0))
            End If
        End With
    End Sub

    ''' <summary>
    ''' Controla el evento de clic del botón Send. Esta rutina comprueba direcciones de correo electrónico
    ''' válidas, crea el cuerpo del mensaje mediante StringBuilder, crea un
    ''' mensaje de correo y, a continuación, intenta enviarlo.
    '''  </summary>
    Private Sub Send_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Send.Click

        If ToAddress.Text = "" Or From.Text = "" Then
            MsgBox("You must enter both To and From email addresses.")
            Exit Sub
        End If

        ' Utilice la clase StringBuilder en lugar de la concatenación de cadenas tradicional.
        ' Ésta es la forma óptima de crear cadenas porque es capaz de modificar
        ' el búfer subyacente en lugar de tener que hacer una copia de la cadena para
        ' cada concatenación.
        Dim sb As New StringBuilder()

        ' Cree el cuerpo del mensaje de correo electrónico.
        sb.Append("The following email was sent to you from the Send Mail " & _
            "sample application:")
        sb.Append(vbCrLf)
        sb.Append(vbCrLf)
        sb.Append("SUBJECT: ")
        sb.Append(Trim(Subject.Text))
        sb.Append(vbCrLf)
        sb.Append(vbCrLf)
        sb.Append("MESSAGE: ")
        sb.Append(Trim(Body.Text))
        sb.Append(vbCrLf)

        ' Para crear un mensaje de correo, basta con crear una instancia de una clase y
        ' definir algunas propiedades.
        Dim mailMsg As New MailMessage(From.Text.Trim, ToAddress.Text.Trim)
        With mailMsg
            If Not String.IsNullOrEmpty(CC.Text) Then
                .CC.Add(New MailAddress(CC.Text.Trim))
            End If

            If Not String.IsNullOrEmpty(BCC.Text) Then
                .Bcc.Add(New MailAddress(BCC.Text.Trim))
            End If

            .Subject = Subject.Text.Trim
            .Body = sb.ToString

            If Not IsNothing(arlAttachments) Then
                Dim mailAttachment As Attachment
                For Each mailAttachment In arlAttachments
                    .Attachments.Add(mailAttachment)
                Next
            End If
        End With

        ' Defina el nombre de SmtpServer. Este nombre puede ser alguno de los siguientes según
        ' la configuración de seguridad local:

        ' a) Dirección IP local (suponiendo que el servidor SMTP del equipo local tenga
        ' privilegios para enviar mensajes a través de un servidor de seguridad local, si hay alguno).

        ' B) 127.0.0.1: el bucle invertido del equipo local.

        ' c) "smarthost" o el nombre o la dirección IP del servidor de intercambio que
        ' utiliza para la mensajería. Esto es lo que se necesita normalmente si se utiliza
        ' un servidor de seguridad corporativo.

        ' Utilice el control de errores estructurado para intentar enviar el mensaje de correo electrónico y
        ' proporcionar información al usuario sobre el éxito o el fracaso del
        ' envío.
        Try
            Dim client As New SmtpClient("smarthost")
            client.Send(mailMsg)
            Attachments.Items.Clear()
            Attachments.Items.Add("(No Attachments)")

            MessageBox.Show("Your email has been successfully sent!", _
                "Email Send Status", MessageBoxButtons.OK, _
                MessageBoxIcon.Information)
        Catch exp As Exception
            MessageBox.Show("The following problem occurred when attempting to " & _
                "send your email: " & exp.Message, _
                Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub

    ''' <summary>
    ''' Controla el evento Load del formulario. Comprueba que el Servicio SMTP está
    ''' instalado y en ejecución.
    '''  </summary>
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load, MyBase.Load, MyBase.Load, MyBase.Load
        ' Asegúrese de que el Servicio SMTP está instalado.
        Dim services() As ServiceController = ServiceController.GetServices
        Dim service As ServiceController = Nothing
        Dim blnHasSmtpService As Boolean = False

        ' Recorra en bucle todos los servicios del equipo y busque el Servicio SMTP.
        For Each service In services
            If service.ServiceName.ToLower = "smtpsvc" Then
                blnHasSmtpService = True
                Exit For
            End If
        Next

        If Not blnHasSmtpService Then
            MessageBox.Show("You do not have SMTP Service installed on this " & _
                "machine. Please check the Readme file for information on how " & _
                "to install SMTP Service.", Me.Text, _
                MessageBoxButtons.OK, MessageBoxIcon.Information)
        End If

        ' Asegúrese de que el Servicio SMTP se está ejecutando. En caso contrario, inícielo.
        If Not service.Status = ServiceControllerStatus.Running Then
            Try
                service.Start()
            Catch
                MsgBox("There was an error when attempting " & _
                    "to start SMTP Service. Please consult the Readme " & _
                    "file for more information.")
            End Try
        End If

        ' Rellene el cuadro combinado Priority con los valores de MailPriority
        With Priority
            .Items.AddRange(New String() {"Normal", "Low", "High"})
            .SelectedIndex = 0
        End With
    End Sub

    Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click
        Me.Close()
    End Sub
End Class

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa