Autor Thema: Access --> Lotus Notes  (Gelesen 3314 mal)

Offline ChrisG72

  • Frischling
  • *
  • Beiträge: 2
Access --> Lotus Notes
« am: 08.05.07 - 09:04:02 »
Hallo zusammen,
ich suche nach einer Möglichkeit aus Access heraus über Notes Emails zu verschicken.

In einem Office Forum bin ich auch auf eine interessante Lösung gestoßen, die für mich fast perfekt ist ... aber eben nur fast.
Leider komme ich mit meinem Problem in dem Office Forum nicht weiter, vielleicht weil es zu spezifisch in den Bereich Notes fällt.
Deswegen versuche ich nun hier mein Glück.

Hier der Code :
Code
Public Sub SendNotesMail2(Subject As String, _
                          Attachment As String, _
                          Recipients As Variant, _
                          CCs As Variant, _
                          BodyText As Variant, _
                          SaveIt As Boolean)
 
'********************************************************************************************
'*  Prozedur    : SendNotesMail2
'*  Datum       : 27.12.2006
'*  Autor       : Dirk Staudenmaier
'*
'*  LastEdited  : 02.01.2007
'*
'*  Zweck       : versendet eine Mail per Lotus Notes
'*                verwendet EarlyBinding!
'*
'*  Getestet    : Access2000 / Lotus Notes 6.5 und 7.0
'*
'*  Parameter   : Subject:      der Betreff
'*                Attachment:   kompletter Pfad des Anhangs, oder Nullstring, falls
'*                              kein Anhang vorhanden
'*                Recipients:   die Empfänger
'*                CCs:          die Kopienempfänger
'*                BodyText:     der zu formatierende Emailtext
'*                SaveIt:       True, wenn Kopie der Mail im Ordner "Gesendet" gespeichert
'*                              werden soll, sonst False
'*
'*  Rückgabewert: keine
'********************************************************************************************
'
'Variablen Dimensionieren, die benötigt werden, um das Mail zu senden
    Dim objNSession     As NotesSession         'Die Notes Session
    Dim objNDir         As NotesDbDirectory     'Das Verzeichnis der Datenbank
    Dim objNMailDB      As NotesDatabase        'Die Datenbank
    Dim objNMailDoc     As NotesDocument        'Das Maildokument selbst
    Dim objNAttachment  As NotesRichTextItem    'Der Anhang (Richtext)
    Dim objNEmbedObj    As NotesEmbeddedObject  'Ein eingebettetes Objekt (Anhang)
    Dim strUserName     As String               'Der Benutzername
    Dim strMailDbName   As String               'Der Datenbankname
    Dim Err_Flag        As Boolean              'Fehler aufgetreten?
 
On Error GoTo ERROR_SendNotesMail2
    'Err_Flag initialisieren
    Err_Flag = False
 
    'Die Session starten
    Set objNSession = CreateObject("Lotus.NotesSession")
    'Session initialisieren
    Call objNSession.Initialize("chris0702")
    'Neues NotesDbDirectory Objekt.
    'Parameter ist Servername, Nullstring für lokalen Computer
    Set objNDir = objNSession.GetDbDirectory(vbNullString)
    'Öffnet die MailDB des aktuellen Users
    Set objNMailDB = objNDir.OpenMailDatabase
    'Neues Mail-Dokument
    Set objNMailDoc = objNMailDB.CreateDocument
    With objNMailDoc
        'Absender
        Call .AppendItemValue("From", objNSession.UserName)
        'Kopienempfänger
        Call .AppendItemValue("CopyTo", CCs)
        'Betreff
        Call .AppendItemValue("Subject", Subject)
        'Email-Text
        Call .AppendItemValue("Body", BodyText)
        'Datum
        Call .AppendItemValue("PostedDate", Now())
        'Beim Versenden im Ordner "Gesendet" speichern?
        .SaveMessageOnSend = SaveIt
        'Eingebettete Objekte und Anhänge hinzufügen
        If Attachment <> "" Then
            Set objNAttachment = .CreateRichTextItem("Attachment")
            Set objNEmbedObj = objNAttachment.EmbedObject(1454, "", Attachment, _
            "Attachment")
        End If
        'Email senden
        .Send 0, Recipients
        'Email als gelesen markieren
        Call .Save(True, True, True)
    End With
 
On Error GoTo 0
EXIT_SendNotesMail2:
 
    'Rudimentäre Fehlerbehandlung
    If Err_Flag = True Then
        Call MsgBox("Beim Versand der Email ist ein Fehler aufgetreten. " _
                    & vbCrLf & "Möglicherweise konnte die Email nicht versendet werden." _
                    , vbExclamation, "Lotus Notes")
    Else
        Call MsgBox("Die Email wurde erfolgreich versendet.", vbInformation, "Lotus Notes")
    End If
    'Aufräumen
    Set objNSession = Nothing
    Set objNDir = Nothing
    Set objNMailDB = Nothing
    Set objNMailDoc = Nothing
    Set objNAttachment = Nothing
    Set objNEmbedObj = Nothing
Exit Sub
 
ERROR_SendNotesMail2:
 
    Err_Flag = True
 
Resume EXIT_SendNotesMail2
End Sub


Hiermit wird der Code aufgerufen :
Code
        SendNotesMail2 mailThema, "", astrTOs(), astrCCs(), mailText, True

Und hier mein Problem :
Ich möchte in der Variabel mailText den Mailinhalt übergeben.
Dazu habe ich in Access ein Memofeld eingerichtet.
Dort wird der Text inkl. Zeilenumbrüche eingegeben.
Und genau diese Zeilenumbrüche werden in der Mail später nicht mit berücksichtigt.

D.h. folgender Text :
"Dies ist ein Test.
Dies ist die 2. Zeile.
Dies ist die 3. Zeile."

Sieht in der Mail so aus :
"Dies ist ein Test.Dies ist die 2. Zeile.Dies ist die 3. Zeile."

Nun meine zwei Fragen :
1. Gibt es eine Möglichkeit diese Zeilenumbrüche mit an Notes zu übergeben ?
2. Oder gibt es eine Möglichkeit statt des Befehls :
   Set objNMailDoc = objNMailDB.CreateDocument
   ... der ja wohl ein neues Notesdokument aufmacht,
   eine in Notes gespeicherte Vorlage aufzurufen  ?
   Das würde mir evtl. sogar noch mehr weiterhelfen.


Danke schon mal vorab.

Gruß
Christoph
   


Offline Hive

  • Senior Mitglied
  • ****
  • Beiträge: 345
  • Geschlecht: Männlich
  • Whooaaaa!!
    • g-notes.de
Re: Access --> Lotus Notes
« Antwort #1 am: 08.05.07 - 09:34:10 »
Das ist leider, das Problem mit den Variants dass die Formatierung nicht übergeben wird.
Als ich ein ähnliches Problem hatte habe ich es durch benutzen der Zwischenablage umgangen, aber das wird bei dieser Funktion schwer. Vielleicht hilft es wenn du die Zeilenumbrüche explizit mit Chr(10) + Chr(13) ersetzt und dann übergibst.

MfG KAI

PS: Eigentlich ist das eher ein Thread für den Entwicklerberreich .. nur so nebenbei
I love deadlines, i love the whooshing sound they make when they pass by

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Access --> Lotus Notes
« Antwort #2 am: 08.05.07 - 15:31:46 »
... du arbeitest mit AppendItemValue - das wird die Ursache sein.
Beim Body-Feld handelt es sich im Notes um ein Richtext-Feld, daß du speziell initialisieren musst. Kennst du die Notes-Klassen?

Toni
Grüßle Toni :)

Offline ChrisG72

  • Frischling
  • *
  • Beiträge: 2
Re: Access --> Lotus Notes
« Antwort #3 am: 08.05.07 - 16:01:33 »
Hallo

@Hive
Das mit chr(13) hatte ich auch schon versucht, klappte leider nicht.

@ata
Leider kenne ich diese Klassen nicht. Wie funktioniert das initialisieren dieses Richtext-Feldes ?

Gruß
Chris

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Access --> Lotus Notes
« Antwort #4 am: 09.05.07 - 15:48:28 »
... ich habe auf meiner Homepage eine Windows-Hilfe-Datei, zwar nicht die aktuellste Version, aber das wesentliche kannst du dir da rauspicken:

https://anton-tauscher.de/LotusScript/download/comdoc.chm

Toni
Grüßle Toni :)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz