Mehrere Mailinstanzen gleichzeitig öffnen

Moderator: ModerationP

Mehrere Mailinstanzen gleichzeitig öffnen

Beitragvon Speedz » 14. Mär 2018, 10:08

Hallo zusammen,

ich verschicke aus Access heraus Mails. Das klappt alles wunderbar, wenn jede Mail einzeln versendet wird. Jetzt möchte ich aber, dass automatisch mehrere Mails hintereinander versendet werden. Das Problem dabei ist, dass die Mails vorher per .Display angezeigt werden sollen und der User tatsächlich auf senden klicken muss. Bei 5 Mails sollten sich also 5 separate Mailfenster öffnen. Aktuell wird 1 Fenster geöffnet und die Variablen werden überschrieben und Dateianhänge hinzugefügt.

Code: Alles auswählen
Set objOutlook = New Outlook.Application
Set objMail = objOutlook.CreateItem(olMailItem)

    With objMail
        .SentOnBehalfOfName = "test@test.de"
        .To = "test2@test2.de"
        .Subject = "TEST"
        strBody = Text für Mailbody
        .Body = strBody
        .Attachments.Add (varDatei)
        .Importance = olImportanceHigh
        .ReadReceiptRequested = True
        .Display
    End With



Als Grundlage für den Versand gibt es ein Recordset. Die Mailadressen für den Empfänger können auch unterschiedlich sein.

Danke schon einmal für eure Hilfe, Speedz
Speedz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 91
Registriert: 11. Nov 2014, 12:01

Re: Mehrere Mailinstanzen gleichzeitig öffnen

Beitragvon Speedz » 14. Mär 2018, 10:22

Kleiner Nachtrag...

Wenn ich die .send Methode verwende, verschickt Outlook immer die erste Mail. Danach bekomme ich den Laufzeitfehler "-1733033718 (98b4010a) - Das Element wurde verschoben oder gelöscht." Beim klick auf Debuggen springt er mir auf die Zeile .SentOnBehalfOfName
Speedz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 91
Registriert: 11. Nov 2014, 12:01

Re: Mehrere Mailinstanzen gleichzeitig öffnen

Beitragvon mmarkus » 14. Mär 2018, 10:51

Speedz hat geschrieben:Das Element wurde verschoben oder gelöscht." Beim klick auf Debuggen springt er mir auf die Zeile .SentOnBehalfOfName


Das bezieht sich dann vermutlich auf das objMail.

Wie das geht ist mir ein Rätsel.
Da müsstest du schon mal den Code mit der Schleife und allen Deklarationen zeigen.
ms access what else
mmarkus
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 994
Registriert: 16. Apr 2012, 16:07
Wohnort: Vienna

Re: Mehrere Mailinstanzen gleichzeitig öffnen

Beitragvon Speedz » 14. Mär 2018, 11:22

Code: Alles auswählen
Sub Mailversand()

Dim varName     As String
Dim varTelefon  As String
Dim varEMail    As String
Dim varFax      As String
Dim varDatei    As String

Set DB = CurrentDb
Set objOutlook = New Outlook.Application
Set objMail = objOutlook.CreateItem(olMailItem)

Set rst = DB.OpenRecordset("SELECT dbo_VorgangBST.vorID, dbo_VorgangBST.vorPraefix1, dbo_VorgangBST.vorPraefix2, dbo_VorgangBST.vorNummer, dbo_VorgangBST.mitID, " & _
                           "dbo_VorgangBST.vartID, dbo_VorgangBST.sta2ID, dbo_VorgangBST.vorDatum, dbo_VorgangBST.vorMailLieferant, dbo_Lieferanten.lieEmailBest " & _
                           "FROM dbo_VorgangBST LEFT JOIN dbo_Lieferanten ON dbo_VorgangBST.lieID = dbo_Lieferanten.lieID " & _
                           "WHERE (((dbo_VorgangBST.sta2ID) Like 2) AND ((dbo_Lieferanten.lieEmailBest) Is Not Null))", dbOpenDynaset, dbSeeChanges)

Do While Not rst.EOF
    varName = DLookup("mitVorname", "dbo_Mitarbeiter", "mitID = " & rst!mitID & "") & " " & _
              DLookup("mitName", "dbo_Mitarbeiter", "mitID = " & rst!mitID & "")
    varTelefon = DLookup("mitTelefon", "dbo_Mitarbeiter", "mitID = " & rst!mitID & "")
    varEMail = DLookup("mitEMail", "dbo_Mitarbeiter", "mitID = " & rst!mitID & "")
    varFax = DLookup("mitFax", "dbo_Mitarbeiter", "mitID = " & rst!mitID & "")
    varDatei = DLookup("dbpfPfad", "tblDatenbankpfade", "dbpfID = 1") & DLookup("dbpfPfad", "tblDatenbankpfade", "dbpfID = 2") & _
               DLookup("vartBezeichnung", "dbo_VorgangArt", "vartID = " & rst!vartID & "") & _
               "\" & Year(rst!vorDatum) & "\" & _
               rst!vorNummer & _
               "\" & rst!vorPraefix1 & rst!vorPraefix2 & "-" & rst!vorNummer & ".pdf"

    With objMail
        .SentOnBehalfOfName = "Absender Adresse"
        .To = rst!lieEmailBest
        .Subject = "Bestellung: " & rst!vorPraefix1 & rst!vorPraefix2 & "-" & rst!vorNummer
        strBody = "Sehr geehrte Damen und Herren," & vbCrLf & vbCrLf
        strBody = strBody & "Anliegend erhalten Sie unsere Bestellung " & rst!vorPraefix1 & rst!vorPraefix2 & "-" & rst!vorNummer & vbCrLf & vbCrLf
        strBody = strBody & "Für Rückfragen stehen wir Ihnen gerne zur Verfügung." & vbCrLf & vbCrLf
        strBody = strBody & "Mit freundlichen Grüßen" & vbCrLf & vbCrLf
        strBody = strBody & varName & vbCrLf & vbCrLf
        strBody = strBody & "Tel. " & varTelefon & vbCrLf
        strBody = strBody & "Fax. " & varFax & vbCrLf
        strBody = strBody & varEMail & vbCrLf & vbCrLf
        .Body = strBody
        .Attachments.Add (varDatei)
        .Importance = olImportanceHigh
        .ReadReceiptRequested = True
        .Display
        .Send
    End With
    CurrentDb.Execute "UPDATE dbo_VorgangBST SET vorMailLieferant = -1, sta2ID = 5 WHERE vorID = " & rst!vorID & ";", dbSeeChanges
    rst.MoveNext
Loop
rst.Close

Reload
Ende:
End Sub
Speedz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 91
Registriert: 11. Nov 2014, 12:01

Re: Mehrere Mailinstanzen gleichzeitig öffnen

Beitragvon mmarkus » 14. Mär 2018, 11:39

wo sind die ganzen Deklarationen für Db, objOutlook,objMail usw....?
Steht bei dir im Modulkopf ganz oben Option Explicit?
Kannst du fehlerfrei kompilieren?
ms access what else
mmarkus
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 994
Registriert: 16. Apr 2012, 16:07
Wohnort: Vienna

Re: Mehrere Mailinstanzen gleichzeitig öffnen

Beitragvon mmarkus » 14. Mär 2018, 11:48

Ich sehe grade, dass das CreateItem nicht in der Schleife ist.
Das Create muss in die Schleife rein.

Grundsätzlich sollte man hier kein DLookup verwenden, sondern eine einzige Abfrage mit allen Daten erstellen.
Spielt aber für das Problem keine Rolle.
Warum verwendest du Display und Send?
Ich dachte der User drückt send?
ms access what else
mmarkus
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 994
Registriert: 16. Apr 2012, 16:07
Wohnort: Vienna

Re: Mehrere Mailinstanzen gleichzeitig öffnen

Beitragvon Speedz » 14. Mär 2018, 12:20

Hallo Markus,

die Deklarationen habe ich vergessen, sry.

Code: Alles auswählen
Option Compare Database
Option Explicit

Dim objOutlook                  As Outlook.Application
Dim objMail                     As Outlook.MailItem
Dim strBody                     As String


Ich habe mit .Display und .Send getestet. Grundsätzlich wollte ich das jede Mail separat angezeigt wird, also die Schleife z.B. 5 verschiedene Mailinstanzen öffnet. Send würde ich später in Betracht ziehen wenn alles sauber läuft. Die Werte die die DLookups verwenden kann ich ohne Probleme noch in das Recordset integrieren.
Das beide aktiv sind ist ein versehen. Es ist immer entweder .Display oder .Send aktiv. Bei einem Wert fehlt das '
Speedz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 91
Registriert: 11. Nov 2014, 12:01

Re: Mehrere Mailinstanzen gleichzeitig öffnen

Beitragvon Speedz » 14. Mär 2018, 12:23

Alles klar... Nachdem ich das create mit in Schleife integriert habe, funktioniert alles einwandfrei.

Danke für die Hilfe!
Speedz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 91
Registriert: 11. Nov 2014, 12:01

Re: Mehrere Mailinstanzen gleichzeitig öffnen

Beitragvon mmarkus » 14. Mär 2018, 12:39

Speedz hat geschrieben:Alles klar... Nachdem ich das create mit in Schleife integriert habe, funktioniert alles einwandfrei.


Ich nehme an, das Öffnen hat den Zweck der Kontrolle.
Ansonsten könnte man das Mail ja direkt versenden.

Was ist, wenn das Mail nicht versandt werden soll, oder wenn der ganze Prozess abgebrochen werden soll?
Das wäre mit diesem Code das reinste Chaos.

Mir fallen das nur etwas komplexere Lösungen mit einer Eventsteuerung ein, wo auf Send und Close (für den Abbruch) reagiert wird.

LG Markus
ms access what else
mmarkus
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 994
Registriert: 16. Apr 2012, 16:07
Wohnort: Vienna

Re: Mehrere Mailinstanzen gleichzeitig öffnen

Beitragvon Speedz » 14. Mär 2018, 12:49

Ja, das Öffnendient in erster Linie der Kontrolle. Wenn eine Mail nicht versendet werden soll, kann der User den Vorgang ja immer noch abbrechen, indem er die Outlook Instanz ohne zu senden schließt. Für jede versendete Mail setzte ich ja einen entsprechenden Flag in der DB. Sollte in diesem Fall der Mailvorgang abgebrochen werden, gibt es darüber natürlich keine Kontrolle.

Aber du hast recht, theoretisch müsste jede Bestellung einen Flag bekommen, ob der Mailversand ok ist oder manuell gesendet werden soll.
Speedz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 91
Registriert: 11. Nov 2014, 12:01


Zurück zu Outlook Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste