MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access - Code Archiv
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 24.05.2019, 09:53   #1
Stefan1977
MOF User
MOF User
Standard Codebeispiel - eMailer als Modul für MS Outlook

Hallo zusammen,
jetzt möchte ich doch auch mal was zum Code Archiv beitragen.

Bei uns müssen immer wieder einzelne Personen oder Mail Verteiler informiert werden, wenn in der Datenbank eine bestimmte Änderung vorgenommen wird.

Mittels kurzem Aufruf aus einem Modul kann eine Mail erzeugt und gesendet werden.
Bsp:
Code:

Call eMailer(1, 1)
Es gibt eine Unterscheidung ob eine Vorlage ausgewählt wird, und ob direkt gesendet oder die Mail nur vorbereitet wird.

Vorgehensweise:
1.es wird ein Verweis auf die "MS Outlook Object Library" im VBA Editor unter "Extras / Verweise" eingetragen

2. es wird eine Tabelle namens "tblMails" angelegt. Diese enthält:
2a. MailID (integer)
2b. Empfaenger (Text)
2c. Betreff (Text)
2d. Inhalt (Memo)

3. es wird ein Modul namens "eMail" erzeugt
In diesem Modul stehen auch alle Infos wie das ganze zu bedienen ist.
Die Parameter sind teils Optional, so dass sie nicht angegeben werden müssen.
Wird der Parameter für SofortMailen nicht angegeben, wird standartmäßig die Mail nur vorbereitet. Bei einer 1 wird sofort gesendet.

Es ist egal ob Outlook offen oder geschlossen ist.
Das wird vorher geprüft und ggf geöffnet.

Probleme gibt es noch wenn in der Tabelle mehrere Mail Empfänger in einer Zeile stehen und der "Sofortversand" angekreuzt ist.
Eine Formatierung mittels Tabelle habe ich auch nicht hinbekommen.
Vielleicht kommt das noch oder jemand hat da Ideen.


Hier der Code vom Modul:
Code:

'---------------------------------------------------------------------------------------
' Module    : eMailer
' Datum     : 24.05.2019
' Autor     : Stefan Zerfaß
' Zweck     : eMails aus Outlook versenden
'
'             Verweis erstellen auf MS Outlook Object Library
'
'               Mittels einer Tabelle "tblMails" werden Mail IDs gespeichert
'                   jede Mail ID enthält Empfaenger, Betreff, Inhalt
'
'               Aufruf mit: Call eMailer(1, 0)
'                   wobei die erste Zahl die MailID angibt,
'                   die zweite Zahl bei 1 die Mail sofort schickt und bei 0 nur öffnet
'                   wird der zweite Wert nicht angegeben wird automatisch 0 gesetzt
'
'               Variante: Call eMailerVariabel ("Empfänger", "Betreff", "Inhalt", 0)
'
'   Beispiele:
'   Call eMailer(1, 1)      'wählt Mail Vorlage 1 und schickt diese sofort los (1)
'   Call eMailer(1, 0)      'wählt Mail Vorlage 1 und öffnet diese nur
'
'   Call eMailerVariabel("Name@domain.de; name2@domain.org", "Hallo Welt", "Hier kommt eine Mail für dich")
'   Call eMailerVariabel("Name@domain.de", "Hallo Welt", "Hier kommt eine Mail für dich", 1)
'---------------------------------------------------------------------------------------
'
Option Compare Database
Option Explicit

Dim strMailEmpfaenger As String
Dim strMailBetreff As String
Dim strMailInhalt As String


Public Sub eMailer(intMailID As Integer, Optional SofortMailen As Integer = 0)

'Mail-ID Werte auslesen:
    strMailEmpfaenger = DBEngine(0)(0).OpenRecordset("SELECT Empfaenger FROM tblMails WHERE MailID = " & intMailID, dbOpenSnapshot)(0)  'Empfänger auslesen
    strMailBetreff = DBEngine(0)(0).OpenRecordset("SELECT Betreff FROM tblMails WHERE MailID = " & intMailID, dbOpenSnapshot)(0)   'Betreff auslesen
    strMailInhalt = DBEngine(0)(0).OpenRecordset("SELECT Inhalt FROM tblMails WHERE MailID = " & intMailID, dbOpenSnapshot)(0)   'Inhalt auslesen

    Dim objOutlook As Outlook.Application
    Dim objMail As Outlook.MailItem
    Set objOutlook = New Outlook.Application
    Set objMail = objOutlook.CreateItem(olMailItem)
    With objMail
        .Recipients.Add strMailEmpfaenger
        .Subject = strMailBetreff
        .Body = strMailInhalt
        .Display
        If SofortMailen = 1 Then .Send
    End With

End Sub

Public Sub eMailerVariabel(Optional strMailEmpfaenger, Optional strMailBetreff, Optional strMailInhalt, Optional SofortMailen As Integer = 0)
    
    Dim objOutlook As Outlook.Application
    Dim objMail As Outlook.MailItem
    Set objOutlook = New Outlook.Application
    Set objMail = objOutlook.CreateItem(olMailItem)
    With objMail
        .Recipients.Add strMailEmpfaenger
        .Subject = strMailBetreff
        .Body = strMailInhalt
        .Display
        If SofortMailen = 1 Then .Send
    End With

End Sub
Ich hoffe der ein oder andere kann das brauchen.
Grüße, Stefan
Stefan1977 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:17 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.