Die Community zu .NET und Classic VB.
Menü

Tipp-Upload: VB.NET 0180: Versenden einer eMail mit Authenzierung

 von 

Hinweis zum Tippvorschlag  

Dieser Vorschlag wurde noch nicht auf Sinn und Inhalt überprüft und die Zip-Datei wurde noch nicht auf schädlichen Inhalt hin untersucht.
Bitte haben Sie ein wenig Geduld, bis die Freigabe erfolgt.

Über den Tipp  

Dieser Tippvorschlag ist noch unbewertet.

Der Vorschlag ist in den folgenden Kategorien zu finden:

  • Internet und Netzwerke

Dem Tippvorschlag wurden folgende Schlüsselwörter zugeordnet:
eMail, E-Mail, Versenden, Authentifizierung, SMTP

Der Vorschlag wurde erstellt am: 22.01.2008 20:26.
Die letzte Aktualisierung erfolgte am 24.02.2008 14:11.

Zurück zur Übersicht

Beschreibung  

Dieser Tipp zeigt wie man eine E-Mail über SMTP mit Authentifizierung versenden kann.

Schwierigkeitsgrad

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

Download:

Download des Beispielprojektes [14,37 KB]

' Dieser Source stammt von http://www.activevb.de
' und kann frei verwendet werden. Für eventuelle Schäden
' wird nicht gehaftet.

' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
' Ansonsten viel Spaß und Erfolg mit diesem Source!
'
' Beachten Sie, das vom Designer generierter Code hier ausgeblendet wird.
' In den Zip-Dateien ist er jedoch zu finden.

' --------- Anfang Projektgruppe eMail Versenden.sln ---------
' -------- Anfang Projektdatei eMail Versenden.vbproj --------
' ---------------- Anfang Datei classEMail.vb ----------------
Imports System.Net
Imports System.Net.Mail
Imports System.Net.Mail.SmtpClient

Public Class classEMail

    ' // EMail (from,to,body,cc)
    Private Message As MailMessage = New MailMessage()

    ' // Anlage
    Private Attach As Attachment

    ' // Authenticated
    Private SmtpUser As New NetworkCredential()

    ' // Versenden über SMTPClient
    Private Smtp As New SmtpClient()

    Public Sub New()

    End Sub

    ' // Absender
    Public Function Absender(ByVal Address As String, ByVal DisplayName As String) As String

        Message.From = New MailAddress(Address, DisplayName)
        Return Address & " (" & DisplayName & ")"

    End Function

    ' // Empfänger
    Public Function Empfänger(ByVal Address As String, ByVal DisplayName As String) As String

        Message.To.Add(New MailAddress(Address, DisplayName))
        Return Address & " (" & DisplayName & ")"

    End Function

    ' // Weitere Empfänger Als Array
    ' Public Function WeitereEmpfänger(ByVal Addresses() As String) As String
    '    Dim Retval As String = ""

    '    For iIndex As Integer = 0 To Addresses.GetUpperBound(0)
    '        Message.CC.Add(Addresses(iIndex))
    '        Retval &= Addresses(iIndex) & "; "
    '    Next

    '    If Retval.EndsWith("; ") Then
    '        Retval = Retval.Substring(0, Retval.Length - 2)
    '    End If

    '    Return Retval
    ' End Function

    ' // Weitere Empfänger Einzeln eingeben
    Public Function WeitereEmpfänger(ByVal Addresses As String) As String

        Dim sText As String = ""

        Message.CC.Add(Addresses)

        For iIndex As Integer = 0 To Message.CC.Count - 1
            sText &= Message.CC(iIndex).Address & "; "
        Next

        If sText.EndsWith("; ") Then
            sText = sText.Substring(0, sText.Length - 2)
        End If

        Return sText

    End Function

    ' // Betreff & Nachricht
    Public Function Nachricht(ByVal Betreff As String, ByVal Text As String) As MailMessage

        Message.Subject = Betreff
        Message.Body = Text

        Return Message

    End Function

    ' // Einstellungen der Nachricht (Als HTML oder nicht & Priorität der Nachricht)
    Public Function Nachricht_Einstellungen(ByVal IsTextHTML As Boolean, ByVal Priorität As _
        MailPriority) As MailMessage

        Message.IsBodyHtml = IsTextHTML
        Message.Priority = Priorität

        Return Message

    End Function

    ' // Anlage als Array
    ' Public Sub Anlage(ByVal Pfad() As String)
    '    For iIndex As Integer = 0 To Pfad.GetUpperBound(0)
    '        Attach = New System.Net.Mail.Attachment(Pfad(iIndex))

    '        Message.Attachments.Add(Attach)
    '    Next
    ' End Sub

    ' // Anlage Einzeln
    Public Sub Anlage(ByVal Pfad As String)

        Attach = New System.Net.Mail.Attachment(Pfad)
        Message.Attachments.Add(Attach)

    End Sub

    ' // Getestet
    Public Function Senden_MitAuthenzierung(ByVal Kontoname As String, ByVal Password As _
        String, ByVal SmtpAddress As String) As Boolean

        ' // Authenzierung
        SmtpUser.UserName = Kontoname
        SmtpUser.Password = Password

        ' -- Send Message
        Smtp.UseDefaultCredentials = False
        Smtp.Credentials = SmtpUser
        Smtp.Host = SmtpAddress
        Smtp.DeliveryMethod = SmtpDeliveryMethod.Network

        Try

            Smtp.Send(Message)
            Return True

        Catch ex As Exception

            MessageBox.Show(ex.Message, ex.Source)
            Return False

        End Try

    End Function

End Class

' ----------------- Ende Datei classEMail.vb -----------------
' ----------------- Anfang Datei frmMain.vb  -----------------
Public Class frmMain

    Private eMail As New classEMail
    Private Addresses() As String
    Private iAddressIndex As Integer = 0

    Private Sub btnSenden_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles btnSenden.Click

        With eMail
            .Absender(Me.txtAbsender.Text, Me.txtAbsender.Text)
            .Empfänger(Me.txtEmpfänger.Text, Me.txtEmpfänger.Text)

            .Nachricht(Me.txtBetreff.Text, Me.txtNachricht.Text)

            .Nachricht_Einstellungen(True, Net.Mail.MailPriority.Normal)

            If .Senden_MitAuthenzierung(Me.txtKontoname.Text, Me.txtPasswort.Text, _
                Me.txtSMTP.Text) Then

                MessageBox.Show("eMail wurde erfolgreich versendet", "", _
                    MessageBoxButtons.OK, MessageBoxIcon.Information)

            End If

        End With

    End Sub

    Private Sub btnAbbrechen_Click(ByVal sender As System.Object, ByVal e As _
        System.EventArgs) Handles btnAbbrechen.Click

        Me.Close()

    End Sub

    Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles btnAdd.Click

        Dim NewAddress As String = ""

        NewAddress = InputBox("eMail Adresse eingeben.", "Weitere eMail Adresse")

        If NewAddress <> "" Then
            Me.txtWeitereEmpfänger.Text = eMail.WeitereEmpfänger(NewAddress)
        End If

    End Sub

    Private Sub btnAnlage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles btnAnlage.Click

        If Me.dlgOpenFile.ShowDialog = Windows.Forms.DialogResult.OK Then
            eMail.Anlage(Me.dlgOpenFile.FileName)

            Me.lstAnlage.Items.Add(Me.dlgOpenFile.FileName)
        End If

    End Sub

End Class

' ------------------ Ende Datei frmMain.vb  ------------------
' --------- Ende Projektdatei eMail Versenden.vbproj ---------
' ---------- Ende Projektgruppe eMail Versenden.sln ----------

	

Diskussion  

Diese Funktion ermöglicht es, Fragen, die die Veröffentlichung des Tipps betreffen, zu klären, oder Anregungen und Verbesserungsvorschläge einzubringen. Nach der Veröffentlichung des Tipps werden diese Beiträge nicht weiter verlinkt. Allgemeine Fragen zum Inhalt sollten daher hier nicht geklärt werden.
Folgende Diskussionen existieren bereits

Um eine Diskussion eröffnen zu können, müssen sie angemeldet sein.