Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

E-Mail Verteiler über Access generieren

Ich möchte einen E-Mail Verteiler über Access generieren. Das E-Mail Programm ist Outlook Express. Es sollte wie folgt ablaufen:
Über Access hole ich die E-Mail Adressen und übergebe sie nach Outlook Express(OE). Das Prob is ich weiß nich wie ich das anpacken kann?
Letztendlich möchte ich auch die Anrede über Access laufen lassen, d.h. der User muss lediglich einmal in OE den Text eingeben und auf senden drücken. Die E-Mails werden an die Empfänger verschickt.
Die "Vorlage" würde dann so ausschauen:

mustermann@dummy.de

Testbetreff

Sehr geehrter Herr Mustermann,


Mit freundlichen Grüßen

Kann mir jemand helfen  ???


Antworten zu E-Mail Verteiler über Access generieren:

mit Office Outlook könnte ich dir wohl helfen, aber mit Outlook Express leider nicht.

Wie würde das laufen mit Office Outlook?

Über VBA-Makro. Office Outlook kann über Makro gesteuert werden, währen Outlook Express eben nicht. Du kannst von Access oder Excel oder Word das Outlook aufrufen und Mails generieren - aber ein bisschen Visual Basic müsstest du schon können.

Das könnte dann so aussehen:

Annahme du hast zwei Tabellen
1.) "Adressen" mit den Feldern
        "LfdNr" = Key numerisch
        "Email" = e-mail-Adresse
        "Anrede" = Anredeschlüssel 1 = Herr, 2 = Frau, 3 = Firma
        "Name"  = Kunden-Nachname
2.) "Textzeilen" mit den Feldern
        "LfdNr" = Key numerisch
        "Text"  = Bei LfdNr = 0 ist es  der Betreff, sonst Textzeile

Tabellen sind aufsteigend sortiert


Option Compare Database
Option Explicit
Option Base 0

Function TestMail()
    Dim Anlage As String, Empfaenger As String, Betreff As String
    Dim Test, TextTab(), TextCnt As Long, RecCnt As Long, Anrede As String
    Dim myOlApp, myNameSpace
    Dim Db As Database
    Dim Tb As Recordset
   
    Set Db = CurrentDb
   
    Set Tb = Db.OpenRecordset("Textzeilen")
    ReDim TextTab(Tb.RecordCount)
    RecCnt = 0
    Betreff = ""
    Tb.MoveFirst
    Do Until Tb.EOF
        If Tb.Fields("LfdNr") = 0 Then
            Betreff = Tb.Fields("Text")
        Else
            RecCnt = RecCnt + 1
            TextTab(RecCnt) = Tb.Fields("Text") & Chr$(10)
        End If
        Tb.MoveNext
    Loop
    TextCnt = RecCnt
    Tb.Close
   
    Set Tb = Db.OpenRecordset("Adressen")
    RecCnt = 0
    Tb.MoveFirst
    Do Until Tb.EOF
        RecCnt = RecCnt + 1
        Empfaenger = Tb.Fields("Email")
        Anrede = "Sehr geehrte"
        If Tb.Fields("Anrede") = 1 Then
            Anrede = Anrede & "r Herr " & Tb.Fields("Name")
        ElseIf Tb.Fields("Anrede") = 2 Then
            Anrede = Anrede & " Frau " & Tb.Fields("Name")
        Else
            Anrede = Anrede & " Damen und Herren"
        End If
        TextTab(0) = Anrede & Chr$(10) & Chr$(10)
        Test = procEMailSchreiben(Anlage, Empfaenger, TextTab(), TextCnt, Betreff)
        Tb.MoveNext
    Loop
    Tb.Close

   
    Set myOlApp = CreateObject("Outlook.Application")
    Set myNameSpace = myOlApp.GetNamespace("MAPI")
    myNameSpace.GetDefaultFolder(olFolderOutbox).Display
End Function
   
Function procEMailSchreiben(strAtt As String, strEmpfaenger As String, tabText(), tabAnz As Long, strBetreff As String) As Boolean
    Dim OL As Outlook.Application
    Dim objMail As MailItem
    Dim Cnt As Long
 
    On Error GoTo ErrorHandler
    Set OL = New Outlook.Application
    Set objMail = OL.CreateItem(olMailItem)
   
    With objMail
        For Cnt = 0 To tabAnz
            .Body = .Body & tabText(Cnt)
        Next Cnt
        .To = strEmpfaenger
        .Subject = strBetreff
        If strAtt <> "" Then
            .Attachments.Add strAtt
        End If
        '.DeferredDeliveryTime = 10000
        .Send
    End With
    Set OL = Nothing

    Set objMail = Nothing
    procEMailSchreiben = True
    Exit Function

ErrorHandler:
    MsgBox "Der folgende Fehler ist aufgetreten: " & Err.Number & _
        " - " & Err.Description, vbCritical + vbOKOnly
    procEMailSchreiben = False
End Function


unter Verweise musst du VBA und die Object libraries von Access, Office und Outlook sowie Microsoft DAO 3.6 Object library haben.

« Letzte Änderung: 25.03.06, 23:41:39 von Dieter Bock »

Testdaten für die beiden Tabellen könnten dann so aussehen:
1.) Tabelle Textzeilen

"LfdNr"   "Text"
0   "Testbetreff"
1   "Zeile1"
2   "Zeile2"
3   "Zeile3"
4   "Zeile4"
5   
6   
7   "Mit freundlichen Grüßen"
8   
9   "Tester & Co KG"


2.) Tabelle Adressen

"LfdNr"   "Email"                  "Anrede"   "Name"
1   "mustermann@dummy.de"   1   "Mustermann"
2   "musterfrau@dummy.de"   2   "Musterfrau"
3   "musterfirma@dummy.de"   3   "Musterfirma"

Zum Starten der Verarbeitung legst du ein Makro "Starten" an. Das besteht aus einer Anweisung "AusführenCode" mit Funktionsname "TestMail()". Und fertig ist das Ganze.

Ich probiers mal thx ;D

Falls du nicht klar kommst, schick mir deine email-Adresse als private Mitteilung. Dann sende ich dir die komplette Datenbank.
Gruß
Dieter

Danke Dieter für die Hilfe das Problem hat sich dadurch erledigt  ;D


« C++quellcode »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Grundstrich
Der Begriff des Grundstrichs im Bereich der Typografie, bezeichnet den senkrechten Strich der Buchstaben. Bei Schriftarten mit variabler Strichstärke, wie zum Beispi...

Haarstrich
Der Begriff Haarstrich stammt aus dem Bereich der Typographie. Bei Schriften, wie zum Beispiel der Antiquaschrift mit unterschiedlichen Strichstärken, wird zwischen ...

E-Mail
E-Mail ist eine Abkürzung für den englischen Begriff electronic mail, der sich mit elektrische Post ins Deutsch übersetzen lässt. Dieses bezeichnet ei...