torstai 28. marraskuuta 2013

VB.net ja sähköpostin lähetys

 Sähköpostia voi lähettää monella tavalla, tässä esimerkki kahdesta niistä:
1. SMTP esimerkki: lähettää sähköpostin automaattisesti annetuilla parametreilla.
2. Outlook esimerkki: luo Outlook:iin uuden viestin annetuilla parametreilla (käyttäjä lähettää).


1. SMTP:

Private Sub Send_Smtp(FromEmail As String, ToEmail As String, _
                                       TheAttachements() As String, SubjectEmail As String, _
                                       ContentEmail As String, AttachmntCount As Integer)
        'Lähettää sähköpostia parametreissa annettuilla tiedoilla: keneltä, kenelle, liitteet, otsikko,
        'sisältö, liitemäärä

        'Salaamaton yhteys käytössä:
        Dim SmtpClient As New System.Net.Mail.SmtpClient("smtp.XXX.com", YY)
        'korvaa XXX oman SMTP serverin nimellä, ja YY portin numerolla

        Dim i As Integer = 0
        Dim attach As System.Net.Mail.Attachment
        Dim myMessage As New System.Net.Mail.MailMessage(FromEmail.ToString, _
                                                 ToEmail.ToString, _
                                                 SubjectEmail.ToString, _
                                                 ContentEmail.ToString)
        Try
            Do Until i = AttachmntCount
                attach = New System.Net.Mail.Attachment(TheAttachements(i).ToString)
                myMessage.Attachments.Add(attach)
                i = i + 1
            Loop
            SmtpClient.Send(myMessage)
            MsgBox("Sähköposti ja liitetiedosto(t) " & CStr(AttachmntCount) & _
                         " kpl lähetetty onnistuneesti vastaanottajalle: " & ToEmail & "!")

        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try

    End Sub


2. Outlook

HUOM. Outlook 2010 tarvii VB.net referencen:
Microsoft.Office.Interop.Outlook versin 12.0.0.0

 
'Avaa Outlookin, johon luotu uusi viesti liitteineen, käyttäjän painettava Send
      If liitteet >= 1 Then
                Dim kpl_liitteet As Integer = liitteet
                eTo = "XXXXX"
                'korvaa XXXXX sähköpostiosoitteella, jolle lähetät
                eSubject = "Test"
                eBody = "Test content"

                oApp = New Outlook.Application()
                oMsg = CType(oApp.CreateItem(Outlook.OlItemType.olMailItem), Outlook._MailItem)
                oMsg.Subject = eSubject
                oMsg.Body = eBody
                oMsg.To = eTo

                'Dim sBodyLen As Integer = oMsg.Body.Length
                oAttachs = oMsg.Attachments
                Dim sSource As String
                Dim sDisplayName As String
                If liitteet = 1 Then
                    sSource = "w:\Tilausvahvistukset\" & tiedostot(0)
                    sDisplayName = tiedostot(0)
                    'oAttach = oAttachs.Add(sSource, _
                                                             Outlook.OlAttachmentType.olByValue, _
                                                             sBodyLen + 1, _sDisplayName)
                    oAttach = oAttachs.Add(sSource, , 0 + 1, sDisplayName)
                Else
                    Dim i As Integer = 0
                    Do Until i = liitteet
                        sSource = "w:\Tilausvahvistukset\" & tiedostot(i)
                        sDisplayName = tiedostot(i)
                        'oAttach = oAttachs.Add(sSource, Outlook.OlAttachmentType.olByValue, _
                                                                   sBodyLen + 1, sDisplayName)
                        oAttach = oAttachs.Add(sSource, , i + 1, sDisplayName)
                        i = i + 1
                    Loop
                End If

                ' Display
                oMsg.Display()
      End if