none
Suche den besten Weg zum Generieren einer Mail mit Anhängen ...

    Frage

  • Meine Access-Anwendung erstellt codegesteuert verschiedene Berichte,  und Word-Dokumente die als PDF ausgegeben werden, dann mit einem Tool zu EINEM PDF zusammengesetzt und gemailt werden sollen. Der Access-Code befüllt übrigens Word-Formulare.

    Dazu verwende ich folgenden Code:

      ' jetzt eine Sammelmail erstellen!
        Dim outl As New Outlook.Application
        Dim mailIt As Outlook.mailitem
        Dim mailAtt As Outlook.Attachments
        Dim mailRec As Outlook.Recipient
        
        
        Set outl = CreateObject("Outlook.application")
        Set mailIt = outl.CreateItem(olMailItem)
        Set mailAtt = mailIt.Attachments
           
        mailIt.Subject = "Gesammelte Unterlagen für Aufträge"
        tmpBodystr = " Bitte die beigefügten Dokumente archivieren/ausdrucken: "
           
        For Each var In Me.zukünftige_untersuchungstermine_lst.ItemsSelected
            tmpBodystr = tmpBodystr & vbCrLf
            tmpBodystr = tmpBodystr & Me.zukünftige_untersuchungstermine_lst.Column(1, var) & "  "
            tmpBodystr = tmpBodystr & Me.zukünftige_untersuchungstermine_lst.Column(2, var) & "  "
            tmpBodystr = tmpBodystr & Me.zukünftige_untersuchungstermine_lst.Column(4, var) & "  "
            tmpBodystr = tmpBodystr & Me.zukünftige_untersuchungstermine_lst.Column(5, var)
        Next
        
        Set mailRec = mailIt.Recipients.Add(<EMAILADRESSE>)

    Es folgen noch einige Zeilen Code, mit dem die Anhänge angefügt und das Ganze gesendet wird.

    Problematisch ist die letzte Code-Zeile "Set mailRec ....". Diese verursacht eine Fehlermledung sobald Outlook zum Zeitpunkt der Code-Ausführung noch geschlossen ist. Starte ich dann Outlook, kann der Code fehlerfrei ausgeführt werden.

    Möglicherweise ist die Art un Weise der Email_generierung nicht besonders glücklich.

    Hat jemand eine bessere Idee ?

    Dienstag, 3. April 2012 07:47

Antworten

  • Ich selber benutze

    http://www.vbarchiv.net/download/details.php?id=237

    dann bin ich frei von Outlook ...

    Dienstag, 3. April 2012 10:06
  • Am 03.04.2012 schrieb NicoNi:

    Problematisch ist die letzte Code-Zeile "Set mailRec ....". Diese verursacht eine Fehlermledung sobald Outlook zum Zeitpunkt der Code-Ausführung noch geschlossen ist. Starte ich dann Outlook, kann der Code fehlerfrei ausgeführt werden.

    Möglicherweise ist die Art un Weise der Email_generierung nicht besonders glücklich.

    Versende direkt über einen Mailserver:
    http://www.g-st.ch/privat/freeware/smtpsend.html
    http://www.freevbcode.com/ShowCode.asp?ID=109

    Servus
    Winfried


    Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
    GPO's: http://www.gruppenrichtlinien.de
    Community Forums NNTP Bridge: http://communitybridge.codeplex.com/
    Reg2xml:  http://www.reg2xml.com - Registry Export File Converter

    Dienstag, 3. April 2012 19:34
  • Hallo,
     
    NicoNi wrote:
     
    > Scheint ein grundsätzliches Problem von Outlook zu sein.
     
    Erstmal solltest du probieren, Outlook manuell zu starten, um zu sehen, ob
    der Start auch ohne weiteres funktioniert. Z.B. werden Login-Daten
    abgefragt, gibt es ein gueltiges Profil usw.
     
    > Ich werde die verschiedenen Optionen ausprobieren.
     
    Probier auch mal, das New in der Deklaration wegzulassen:
     
    Dim outl As Outlook.Application 

    > Ggf käme auch noch CDO über den eigentlichen Exchange infrage.
     
    Das solltest du bleiben lassen. Bis 2003 war es so, dass man bei
    OL-Automation ClickYes brauchte, da OL immer vom Schlimmsten ausging und
    pro Mail eine Bestaetigung per Mausklick verlangte.
     
    Seit 2007 wird geprueft, ob ein gueltiger/aktueller Virenchecker
    installiert ist, und wenn ja, geht die Mail ohne Rueckfrage durch. Das gilt
    aber _nur_ fuer OL-Automation, nicht fuer CDO und Mapi. In diesen Faellen
    hilft auch ClickYes nur noch begrenzt, denn es laeuft pro Mail ein Timer
    von IIRC 5 sec. rueckwaerts, bevor der Yes-Button geklickt werden kann.
     
    Gruss - Peter
     
    --
     


    Mittwoch, 4. April 2012 08:39
    Moderator
  • Hallo NicoNi

    Dir fehlt eine Zeile, die die Session in Outlook anmeldet (das macht Outlook nur automatisch, wenn es direkt gestartet wird). Zudem solltest Du nur ein Outlook.Application objekt erstellen, wenn es noch keines gibt, sonst das bestehende benutzen. (macht OL allerdings (meist) auch automatisch)

    NicoNi wrote:

       Set outl = CreateObject("Outlook.application")

    On Error Resume Next
    Set outl = GetObject(, "Outlook.Appliation")
    If Err Then
     'hier noch den üblichen Error Handler wieder einsetzen, z.B.
     ' On Error GoTo PROC_ERR
     Set outl = CreateObject("Outlook.Application")
     outl.Session.Logon 'dies hast Du vergessen
    End If
    'hier erneut den üblichen Error Handler wieder einsetzen, z.B.
    ' On Error GoTo PROC_ERR

       Set mailIt = outl.CreateItem(olMailItem)
       Set mailAtt = mailIt.Attachments

    HTH
    Henry

    Donnerstag, 5. April 2012 09:18

Alle Antworten