Lotus Notes / Domino Sonstiges > OLE/COM-Programmierung

eMail aus Access

(1/2) > >>

Ottoeins:
Hallo,

ich bin totaler Notes-Anfänger und habe folgendes Problem:
Mit dem VBA-Code aus Google kann ich eine eMail aus Access generieren, sie wird sofort gesendet. Ich möchte aber, daß die eMail nicht sofort gesendet wird sondern erst nach Betätigung des Senden-Buttons. Es würde mir auch reichen, wenn die eMail zunächst im Entwurfs-Ordner landet und dann händisch verschickt werden muß. Weiß einer Rat?

Gruß und noch schöne Pfingsten

Otto1





--- Code: ---Function SendNotesMail(MailTo$, KopieTo$, Mailtext$, MailAnhang$, _
                         MailAbsender$, MailBetreff$, Optional MailSenden As Boolean) As Boolean
                         
   Dim rtitem           As Object
   Dim EmbeddedObject   As Object
   Dim SessionNotes     As Object
   Dim NotesDB          As Object
   Dim NotesDoc         As Object
   Dim EmpfListe()      As String
   Dim EmpfCnt          As Integer
   Dim Pos1             As Long
   
    ' wenn die Betreffzeile leer ist, dann wird eine erzeugt
    If Trim$(MailBetreff) = "" Then
    End If

    On Error GoTo Err_Mail_Click
   
    ' An die laufende Lotus Notes Session anhängen
    Set SessionNotes = CreateObject("Notes.NOTESSESSION")
   
    ' Notes Datenbank-Objekt erstellen und initialisieren
    Set NotesDB = SessionNotes.GetDatabase("", "")
    NotesDB.OPENMAIL
    If NotesDB.IsOpen = False Then
        MsgBox "Bitte melden Sie sich vollständig in Notes an!", vbInformation + vbOKOnly
        Exit Function
    End If
   
    ' Empfängerliste erstellen
    EmpfCnt = 0
    Pos1 = InStr(MailTo, ";")
    While Pos1 > 0
        ReDim Preserve EmpfListe(EmpfCnt)
        EmpfListe(EmpfCnt) = Left(MailTo, Pos1 - 1)
        MailTo = Right(MailTo, Len(MailTo) - Pos1)
        Pos1 = InStr(MailTo, ";")
        EmpfCnt = EmpfCnt + 1
    Wend
    ReDim Preserve EmpfListe(EmpfCnt)
    EmpfListe(EmpfCnt) = MailTo
   
    ' Neues Notes-Dokument anlegen (Mail)
    Set NotesDoc = NotesDB.CreateDocument
    With NotesDoc
        .Form = "Memo"
        .Subject = MailBetreff
        .sendto = EmpfListe
        .CopyTo = KopieTo
        '.blindcopyto= Blindkopie an
        .Body = Mailtext & vbCrLf & MailAbsender
        '.DefaultMailSaveOption = 0
        '.MailSaveOption = 0
        .DeliveryReport = "B"
        .Importance = "2"
        '.logo = "Scania"
        .SaveMessageOnSend = True ' bei True wird ein Exemplar in Gesendet gestellt
        .ReturnReceipt = "1"
        .Sign = "1"
        '.encrypt ="0"
        '.Principal = session.UserName
        '.viewicon ="74"
        '.from = session.UserName
        '.SaveOptions = 0
        '.SecureMail = ""
        '.SenderTag = "F"

        ' Dateianhang
        If Trim$(MailAnhang) <> "" Then
            Const embed_ATT = 1454
            Set rtitem = .CreateRichTextItem(MailAnhang)
            Set EmbeddedObject = rtitem.EmbedObject(embed_ATT, "", MailAnhang, MailAnhang)
        End If
       
       
        MailSenden = False
        ' Mail Senden oder Speichern
        If MailSenden Then
           .Send True
        Else
           .Save
        End If
    End With

     SendNotesMail = True

    Set SessionNotes = Nothing
    Set NotesDB = Nothing
    Set NotesDoc = Nothing
    Set rtitem = Nothing
    Set EmbeddedObject = Nothing
   
Exit_Mail_Click:
Exit Function

Err_Mail_Click:
    MsgBox Err.Number & "-" & Err.Description
    SendNotesMail = False
    Resume Next
   
End Function



--- Ende Code ---

eknori (retired):
Nun, wenn du den Code gelesen ( und verstanden ) hast, dann wird dir auch der Parameter MailSenden As Boolean im Functionskopf aufgefallen sein.
Da hat der Code Author schon eine Möglichkeit geschaffen, das sofortige Senden zu unterbinden und die Mail lediglich zu speichern. Um das in den "Entwürfen" zu speichern, muss man lediglich ein paar Feldwerte setzen. Die sind mir allerdings nicht präsent.
Einfach mal eine Mail erstellen und als Entwurf speichern. Dann mit einer Mail vergleichen, die sofort versendet wurde. Schon hat man die Unterschiede und die Felder, die man setzen muss.

Ottoeins:
Hallo Ulrich,

danke für Dein eMail. Den Parameter MailSenden habe ich auch gesehen. Allerdings verlangt Notes diesen Parameter, es ist nicht möglich über SAVE die eMail so zu speichern. Auch läßt Notes nicht die Möglichkeit zu, ohne die Vorgabe eines Empfängers die eMail zu generieren. Und somit wird die eMail also wie bereits oben erwähnt, sofort gesendet. Ich bräuchte die Möglichkeit, entweder die eMail ohne Empfänger zu generieren oder die eMail zunächst in den Entwurfsordner zu speichern.

Gruß Otto1

koehlerbv:
Ich befürchte, dieser Code wurde irgendwo "gefunden", aber nicht verstanden.

Zum letzten Posting:

--- Zitat von: Ottoeins am 12.05.08 - 20:02:18 ---Den Parameter MailSenden habe ich auch gesehen. Allerdings verlangt Notes diesen Parameter, es ist nicht möglich über SAVE die eMail so zu speichern.
--- Ende Zitat ---
Das ist Unfug. Der Parameter "MailSenden" ist Bestandteil der VBA-Routine und hat mit Notes so viel zu tun wie mein Garagentor mit dem Startpunkt "S" des Salzburger Flughafens.

Weiterhin:

--- Zitat von: Ottoeins am 12.05.08 - 20:02:18 ---Auch läßt Notes nicht die Möglichkeit zu, ohne die Vorgabe eines Empfängers die eMail zu generieren.
--- Ende Zitat ---
Auch falsch - im doppelten Sinne: Mit Notes (bzw. dem OLE- oder COM-Zugriff auf die Notes-API) wird zunächst ein *Dokument* erzeugt. Ob man dieses dann versendet oder nicht, *muss* man selbst entscheiden.

Wobei wir beim nächsten Punkt wären: Dieser Code-Bestandteil

--- Code: ---MailSenden = False
        ' Mail Senden oder Speichern
        If MailSenden Then
           .Send True
        Else
           .Save
        End If
--- Ende Code ---
sagt aus: Die Variable "MailSenden" wird zwangsweise auf False gesetzt, die folgenden Zeilen versenden daher das eMail überhaupt nicht.

So, wie der bisherige Code aussieht, wird ein derart erzeugtes Dokument auch in der Ansicht "Gesendet" angezeigt, da die Items "PostedDate", $MessageType und ExcludeFromView nicht angelegt werden.

Daher:
Ich habe keine Ahnung, was da nun codemässig wirklich getrieben wird. Das letzte Posting von "Otto1" lässt darauf deuten, dass der aktuelle Code anders aussieht als der gepostete.

Zum Code: Wenn nochmals Code gepostet wird, sollten unbedingt alle sowieso auskommentierten Zeilen auch gelöscht werden. Man kann keinem Hilfswilligen zumuten, dass er sich durch das Zeugs auch noch durchwühlt.

Tipp an "Otto1": Ohne die Dokumentation zum Domino-Designer und nur mit gefundenem Code geht hier gar nichts. Aber auch nur mit VBA-Kenntnissen sollte aber schon klar sein, dass in den gemachten Aussagen Widersprüche sein müssen.

Bernhard

Ottoeins:
Hallo Bernhard,

anstatt den VBA-Code zu kommentieren, solltest Du lieber eine ernsthafte Lösung anbieten.
Damit wäre mir und der Sache mehr geholfen.

REM-Zeilen dienen dem besseren Verständnis und gehören natürlich zum Code. Sind Objekt-
Paramenter auskommentiert, kann gerade hier die Lösung stecken.

Im übrigen, daß hier gar nichts geht, sehe ich auch! Deine schlauen Sprüche kannst Du Dir sparen.

Tip an Bernhard:
Laß Dein Garagentor wie es ist und widme Dich den Problemen. Aber sachlich.


Gruß Otto1

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln