Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0544: Mail mit Lotus Notes versenden

 von 

Beschreibung 

Diese Beispiel zeigt, wie man Lotus Notes in sein VB Projekt einbinden kann.

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [2,72 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Projekt1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Schaltfläche "Command1"
' Steuerelement: Textfeld "Text4"
' Steuerelement: Textfeld "Text3"
' Steuerelement: Textfeld "Text2"
' Steuerelement: Textfeld "Text1"
' Steuerelement: Kontrollkästchen-Steuerelement "Check1"
' Steuerelement: Beschriftungsfeld "Label5"
' Steuerelement: Beschriftungsfeld "Label4"
' Steuerelement: Beschriftungsfeld "Label3"
' Steuerelement: Beschriftungsfeld "Label2"
' Steuerelement: Beschriftungsfeld "Label1"

Option Explicit

'Public Sub SendNotesMail(Subject as string, attachment as string,
'recipient as string, bodytext as string,saveit as Boolean)
'Diese Public Sub sendet eine Mail (wenn nötig) mit Anhang an
'"recipient"
'
'Achtung! Der Notes Client muss auf dem System installiert sein!

Public Sub SendNotesMail(Subject As String, _
                         Attachment As String, _
                         Recipient As String, _
                         BodyText As String, _
                         SaveIt As Boolean)

'Variablen Dimensionieren, die benötigt werden, um das Mail zu senden
    Dim Maildb As Object 'Die Datenbank
    Dim UserName As String 'Der Benutzername
    Dim MailDbName As String 'Der Datenbankname
    Dim MailDoc As Object 'Das Maildokument selbst
    Dim AttachME As Object 'Der Anhang (Richtext)
    Dim Session As Object 'Die Notes Session
    Dim EmbedObj As Object 'Ein eingebettetes Objekt (Anhang)
    
    'Die Session starten
    Set Session = CreateObject("Notes.NotesSession")
    
    'Den Benutzernamen auslesen und den Dateinamen
    'der MailDB errechnen
    'Dies wird nicht überall benötigt. Auf manchen
    'Systemen kann auch ein leerer String übergeben werden
    UserName = Session.UserName
    MailDbName = Left$(UserName, 1) _
    & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"
    
    'Datenbank öffnen
    Set Maildb = Session.GETDATABASE("", MailDbName)
     If Maildb.isOpen = True Then
          'Fertig zum mailen!
     Else
         Maildb.OPENMAIL
     End If
     
    'Ein neues Maildokument erstellen
    Set MailDoc = Maildb.CREATEDOCUMENT
    MailDoc.Form = "Memo"
    MailDoc.sendto = Recipient
    MailDoc.Subject = Subject
    MailDoc.body = BodyText
    MailDoc.SAVEMESSAGEONSEND = SaveIt
    
    'Eingebettete Objekte und Anhänge hinzufügen
    If Attachment <> "" Then
        Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment")
        Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, "Attachment")
        MailDoc.CREATERICHTEXTITEM ("Attachment")
    End If
    
    'Senden
    MailDoc.PostedDate = Now()
    MailDoc.SEND 0, Recipient
    
    'Aufräumen
    Set Maildb = Nothing
    Set MailDoc = Nothing
    Set AttachME = Nothing
    Set Session = Nothing
    Set EmbedObj = Nothing
End Sub

Private Sub Command1_Click()
  SendNotesMail Text1, Text2, Text3, Text4, Check1
End Sub

Private Sub Form_Load()

End Sub
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Projekt1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Seriendruck aus Access - ingo 17.04.12 16:18 3 Antworten

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 48 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Roman Ott am 15.02.2010 um 15:59

Falls jemand noch die Lösung sucht wie man dann das Lotus Notes Fenster in den Vordergrund holt um sich die Mail anzusehen und per Hand den sende-Button in Lotus zu betätigen.

1. Send Funktion auskommentieren
' Mail zustellen
'Call objNotesMailDoc.Save(True, False)
'Call objNotesMailDoc.send(False)
objNotesMailDoc.RemoveItem ("DeliveredDate")
Call objNotesMailDoc.Save(True, False)
' Nachricht an Benutzer
'msg = "Die E-Mail wurde erfolgreich versendet!"
'MsgBox msg, vbInformation, "Notesmail versenden..."
' Objektvariablen zurücksetzen

2. Die Mail in Lotus darstellen --> folg. Code einfügen am Ende
Dim Workspace As Object
Set Workspace = CreateObject("Notes.NotesUIWorkspace")
Call Workspace.EDITDOCUMENT(True, objNotesMailDoc).GOTOFIELD("Body")

3. Lotus Notes in den Vordergrund holen
'Folgender Code aktiviert das Lotus Notes Fenster
Set WshShell = CreateObject("WScript.Shell")
WshShell.AppActivate "IBM Lotus Notes"

Kommentar von Reinhard am 21.01.2009 um 14:11

Hallo Stephan,
bisher hab' ich es nicht geschafft das Passwort einzubinden. Leider :-(
Würde es auch gebrauchen, da bei uns das System so eingerichtet ist, daß man sich nach 5 Minuten automatisch ausloggt. Und dann läuft das Makro nicht mehr.

Ciao

Kommentar von Stephan Möller am 20.01.2009 um 14:46

Kann ich hier auch das Paßwort der Notesdatenbank mit einbinden?

Kommentar von Forstpointler am 09.12.2008 um 17:08

bekomme das prg. nicht zum laufen!
fehlermeldung:laufzeitfehler '429'
objekterstellung durch activeX-komponente nicht möglich.
gibt's dazu eine erklärung?

danke
mfg.

Kommentar von Silvio am 11.04.2008 um 15:08

Hallo,

finde diese Funktion super!! Nur funkioniert das mit dem Anhang nicht so recht:
"rich text item attachment already exists"

Mit dem Lösungsversuch von AlienJoker wird es zwar verschickt und der Empfänger erhält im Anhang die Excel Datei aber beim Öffnen startet lediglich Excel ohne Workbook...

Weiß jemand woran das liegen könnte?

Gruß

Kommentar von Urias am 12.09.2007 um 12:23

Hi

diese anleitung hat mir schon toll weitergeholfen. weiss jemand wie ich in einem solchen mail eine tabelle erstellen kann?

gruss
urias

Kommentar von Paul Schaerer am 28.08.2007 um 20:55

Hallo.
Tolle Hilfe. Habe Damit meine erste Huerde genommen.
Hat der Autor dieses Codes gleich auch noch eine Loesung um die gesendeten Texte Fett oder andersfarbig zu gestalten?
Das waere fuer mich der Hammer.
Vielen Dank im Voraus

Kommentar von AlienJoker am 11.06.2007 um 14:08

Hey leutz,
das mit dem "rich text item attachment already exists" liegt an den Zeilen:
Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, "Attachment")
MailDoc.CREATERICHTEXTITEM ("Attachment")

Wenn ihr die ändert in:
Set EmbedObj = AttachME.EmbedObject(1454, "", Attachment, "Attach")
MailDoc.CREATERICHTEXTITEM ("Attach")

dann klapperts.
Grüße
AlienJoker

Kommentar von Reinhard am 08.03.2007 um 07:07

Hallo Horki!

Genial! Genau das, was ich brauche. Vielen, vielen Dank!

Noch eine kurze Frage: in meiner Firma ist es Pflicht, daß sich Lotus nach 10 Minuten ausloggt. Versuche ich dann per Excel ein Mail zu schicken, klappts natürlich nicht. Kann ich das irgendwie abfangen? Oder kann sich Excel mit Passwort anmelden bevor es sendet?

Ciao
Reinhard (der wieder mal gesehen hat, daß er noch ganz viel lernen muß)

Kommentar von Horki am 07.03.2007 um 16:17

Hallo Reinhard,

ich gehe mal von Excel aus.
Unter
http://www.vb-hanseatic.de/Mail_to_LN.zip
findest Du ein Add-In das so etwas und mehr kann.
Gruß Horki
PS: VB - Passwort ist stress

Kommentar von Reinhard am 07.03.2007 um 15:47

Hallo!

Eines würde ich noch brauchen:
ich muß in die Mail einen Ausschnitt eines Tabellenblattes einfügen. Um die Formatierung zu erhalten dachte ich an "CopyAsPicture" bzw "alsBildKopieren". Aber wie bringe ich das in Notes?

Danke schonmal
Ciao
Reinhard

Kommentar von Ansgar Schneider am 22.01.2007 um 16:01

Problem wohl selber gelöst.

Kommentar von Ansgar Schneider am 22.01.2007 um 09:22

Hallo zusammen,

ich habe folgende Funktion zum Senden der E-Mails. Mit dieser Funktion ist es möglich eine Mail an 1 Empfänger (Recipient) und an mehrere In Kopie (Copy) zu senden.
Nicht funktionierten tut die Kombination aus mehreren in Recipient und beliebig in Copy. Die Mail wird dann nur an die Leute in Copy versendet.
Kann mir jemand helfen, benötige diese Funktionalität dirgend.

Danke vorab!!!


Gruß Ansgar


Public Sub SendNotesMail(Subject As String, Attachment As String, Recipient As String, Copy As String, BodyText As String, SaveIt As Boolean)
On Error Goto Error
'Set up the objects required for Automation into lotus notes
Dim Maildb As Object 'The mail database
Dim UserName As String 'The current users notes name
Dim MailDbName As String 'THe current users notes mail database name
Dim MailDoc As Object 'The mail document itself
Dim AttachME As Object 'The attachment richtextfile object
Dim session As Object 'The notes session
Dim EmbedObj As Object 'The embedded object (Attachment)
Dim NotesField As Object
'Start a session to notes
Set session = CreateObject("Notes.NotesSession")
'Next line only works with 5.x and above. Replace password with your password
'Session.Initialize ("password")
'Get the sessions username and then calculate the mail file name
'You may or may not need this as for MailDBname with some systems you
'can pass an empty string or using above password you can use other mailboxes.
UserName = session.UserName
MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"
'MailDbName = "270810.nsf"
'Open the mail database in notes

If UserName <> "" Then

Set Maildb = session.GETDATABASE("", MailDbName)
If Maildb.IsOpen = True Then
'Already open for mail
Else
Maildb.OPENMAIL
'MsgBox "Um eine Email zu senden bitte erst Notes starten", vbExclamation, "Notes Fehler"
'Exit Sub
End If
'Set up the new mail document

Set MailDoc = Maildb.CREATEDOCUMENT
MailDoc.Form = "Memo"
' MsgBox "AN: " & Recipient
' MsgBox "CC: " & Copy
Set NotesField = MailDoc.APPENDITEMVALUE("SendTo", VBA.Split(Recipient, ","))
Set NotesField = MailDoc.APPENDITEMVALUE("CopyTo", VBA.Split(Copy, ",")) '' <-Optional
' Set NotesField = NotesDocument.APPENDITEMVALUE("BlindCopyTo", Split(Text3.Text, ",")) ''
MailDoc.Subject = Subject
MailDoc.Body = BodyText
MailDoc.SAVEMESSAGEONSEND = SaveIt
' 'Set up the embedded object and attachment and attach it
' 'If Attachment <> "" Then
' '
' If Attachment > "" Then
' Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment")
' Call AttachME.EMBEDOBJECT(1454, "", Attachment)
' ' Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, "Attachment")
' MailDoc.CREATERICHTEXTITEM ("Attachment")
' End If
'Send the document
MailDoc.PostedDate = Now() 'Gets the mail to appear in the sent items folder
MailDoc.Send 0, Recipient
SysCmd acSysCmdSetStatus, "----------------> MAIL GESENDET <------------------"
Else
MsgBox "Um eine Email zu senden bitte erst Notes starten", vbExclamation, "Notes Fehler"
End If
'Clean Up
Set Maildb = Nothing
Set MailDoc = Nothing
Set AttachME = Nothing
Set session = Nothing
Set EmbedObj = Nothing
Exit Sub

Error:

mdlErrorHandler.ERRORHANDLER "mdlSendMail", "SendNotesMail"
End Sub

Kommentar von am 17.01.2007 um 05:57

Kommentar von Firestricker1 am 16.01.2007 um 13:34

Hallo @ all,

ich kann leider nicht an mehrere Emails verschicken! Ich bekomme immer ein ...Mairelay1... kann mir bitte diesbezüglich jemand helfen?

Kommentar von Horki am 15.12.2006 um 17:33

Vorab mal Asche auf mein Haupt ;-)
Ich war davon ausgegangen ein Empfänger + Anhang.
Mehere Empfänger oder kein Anhang = Error .-(((

Folgende Zeilen im Code müssen geändert werden

Set NotesField = NotesDocument.APPENDITEMVALUE("SendTo", Split(Text1.Text, ",")) 'Text1.Text) ' <-Empfänger
Set NotesField = NotesDocument.APPENDITEMVALUE("CopyTo", Split(Text2.Text, ",")) '' <-Optional
Set NotesField = NotesDocument.APPENDITEMVALUE("BlindCopyTo", Split(Text3.Text, ",")) ''<- Optional

durch Einsatz von Split werden die Empfänger einzel angesehen
'Anhang wenn nicht dann nicht
If Text5.Text > "" Then Call .EMBEDOBJECT(1454, "", Text5.Text)

wenn nicht dann nicht stimmt jetzt
'Empfangsbestätigung an/ausschalten: bei 1 ist an
If Check1.Value = 1 Then
Call NotesDocument.ReplaceItemValue("ReturnReceipt", "1")
Else
Call NotesDocument.ReplaceItemValue("ReturnReceipt")
End If

Empfangsbestätigung klapt so besser

Getestet hab ich diesmal zu Haus mit Internet als Internet-Mail sowie auf Arbeit als Notes Mail auf einem Domino Server
Beides lief :-))

Gruß Horki

Kommentar von Ansgar Schneider am 13.12.2006 um 14:16

Hallo zusammen,

ich versuche über das gelistete Modul eine Email mit mehreren Empfängern zu senden. Unter "Gesendet" wird die Mail mit allen Empfängern angezeigt, aber versendet worden ist die Mail nicht.

sRep = "name1@notes.de,name2@notes.de"

Ist die Zeichenfolge falsch oder ist ein Versenden an mehrere Empfänger nicht möglich???


Vielen Dank für die Hilfe


Gruß

Ansgar

Kommentar von Horki am 01.12.2006 um 21:05

Habe mal alles ein wenig Angepasst und Möglichkeiten einfließen lassen.
Vorab Demo ist im Upload-Bereich unter send_to_LN zu finden.
mfg.Horki

'Dieser Source stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source !

'------------- Anfang Projektdatei Project1.vbp -------------
' Die Komponente 'Microsoft Rich Textbox Control 6.0 (SP6)
' (RICHTX32.OCX)' wird benötigt.

'--------- Anfang Formular "Form1" alias Form1.frm ---------
' Steuerelement: Schaltfläche "Cmd_Abuch"
' Steuerelement: Schaltfläche "Cmd_Mail"
' Steuerelement: Schaltfläche "Cmd_Exit"
' Steuerelement: Schaltfläche "Cmd_Anhang"
' Steuerelement: Textbox "Text1"
' Steuerelement: Textbox "Text2"
' Steuerelement: Textbox "Text3"
' Steuerelement: Textbox "Text4"
' Steuerelement: Textbox "Text5"
' Steuerelement: RichTextBox "RichTextBox1"
' Steuerelement: Kontrollkästchen-Steuerelement "Empfangsbestätigung"
' Steuerelement: Kontrollkästchen-Steuerelement "Signatur einfügen"
' Steuerelement: Beschriftungsfeld "An"
' Steuerelement: Beschriftungsfeld "Kopie"
' Steuerelement: Beschriftungsfeld "Blindkopie"
' Steuerelement: Beschriftungsfeld "Thema"
' Steuerelement: Rahmensteuerelement "Frame1"
' AUF Frame1
' Steuerelement: Schaltfläche "Cmd_an"
' Steuerelement: Schaltfläche "Cmd_bcc"
' Steuerelement: Schaltfläche "Cmd_cc"
' Steuerelement: Schaltfläche "Cmd_zu"
' Steuerelement: Listfeld "List1"
' Steuerelement: Beschriftungsfeld "Label1"

Option Explicit
Private Type OpenFilename
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
iFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
Flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OpenFilename) As Long

Private Function ShowFileDialog() As String
Dim ofn As OpenFilename
ofn.lStructSize = Len(ofn)
ofn.hwndOwner = hWnd
ofn.lpstrFile = String(256, 0)
ofn.nMaxFile = 255
ofn.lpstrTitle = "Datei auswählen"
ofn.Flags = &H800000 + &H1000 + &H8 + &H4
GetOpenFileName ofn
If Mid(ofn.lpstrFile, 1, 1) <> Chr(0) Then ShowFileDialog = ofn.lpstrFile
End Function

Private Sub Cmd_Abuch_Click()
'abrufen der Einträge im Adressbuch von LotusNotes
Dim session As Object
Dim db As Object
Dim view As Object
Dim doc As Object
Dim First, Last, Middle, tmpFull, Fehler
On Error Resume Next
Set session = CreateObject("Notes.NotesSession")
If err <> 0 Then
MsgBox "Fehler: Bitte erst Lotus Notes starten. (" & Fehler & ")"
Exit Sub
End If
Set db = session.GETDATABASE("", "names.nsf")
Set view = db.GetView("People")
Set doc = view.GetFirstDocument
Do Until doc Is Nothing
First = doc.GetItemValue("FirstName")(0)
Last = doc.GetItemValue("LastName")(0)
Middle = doc.GetItemValue("MiddleInitial")(0)
If Middle <> "" Then
tmpFull = Trim(First + " " + Middle + " " + Last)
Else
tmpFull = Trim(First + " " + Last)
End If
List1.AddItem tmpFull '
Set doc = view.GetNextDocument(doc)
Loop
Frm_abuch.Visible = True
End Sub

Private Sub Cmd_an_Click()
' Empfänger
If Text1.Text = "" Then
Text1.Text = List1.Text
Else
Text1.Text = Text1.Text & ", " & List1.Text
End If
End Sub

Private Sub Cmd_cc_Click()
' Kopie
If Text2.Text = "" Then
Text2.Text = List1.Text
Else
Text2.Text = Text2.Text & ", " & List1.Text
End If

End Sub

Private Sub Cmd_bcc_Click()
'Blindkopie
If Text3.Text = "" Then
Text3.Text = List1.Text
Else
Text3.Text = Text3.Text & ", " & List1.Text
End If

End Sub

Private Sub Cmd_zu_Click()
' Adressen ausblenden
Frm_abuch.Visible = False
End Sub

Private Sub Cmd_Anhang_Click()
' Anhang zufühgen
Text5.Text = ShowFileDialog

End Sub

Private Sub Cmd_Mail_Click()
Dim NotesSession As Object
Dim NotesMailFile As Object
Dim NotesDocument As Object
Dim NotesField As Object
Dim Signature As String

' Verbindung zu Lotus Notes herstellen
Set NotesSession = CreateObject("Notes.NotesSession")
Set NotesMailFile = NotesSession.GETDATABASE("", "")
NotesMailFile.OPENMAIL

'Werte setzen
Set NotesDocument = NotesMailFile.CREATEDOCUMENT
Set NotesField = NotesDocument.APPENDITEMVALUE("SendTo", Text1.Text) ' <-Empfänger
Set NotesField = NotesDocument.APPENDITEMVALUE("CopyTo", Text2.Text) '' <-Optional
Set NotesField = NotesDocument.APPENDITEMVALUE("BlindCopyTo", Text3.Text) ''<- Optional
Set NotesField = NotesDocument.APPENDITEMVALUE("Subject", Text4.Text) '<-Betrifft/Thema
Set NotesField = NotesDocument.CREATERICHTEXTITEM("Body")
' Signatur ja / nein
If Check2.Value = 1 Then
Signature = NotesMailFile.GetProfileDocument("CalendarProfile") _
.GetItemValue("Signature")(0)
Else
End If
' Textfeld mit Anhang ersellen
With NotesField
.APPENDTEXT RichTextBox1.Text
.ADDNEWLINE 2 '2 Leerzeilen einfügen
'Anhang
Call .EMBEDOBJECT(1454, "", Text5.Text)
.ADDNEWLINE 2 '2 Leerzeilen einfügen
' Signatur ans Ende stellen
.APPENDTEXT Signature
End With

'Empfangsbestätigung an/ausschalten: bei 0 ist aus
Call NotesDocument.ReplaceItemValue("ReturnReceipt", Check1.Value)

'Will man sofort senden dann
Call NotesDocument.Send(False)
On Error Resume Next
' Mail speichern
Call NotesDocument.Save(True, True)
'Meldung wenn fertig muss nicht sein
MsgBox "Die e-mail ist versendendet!.", vbInformation, "E-mail versenden..."

'''Will man nicht sofort senden dann erst vorschau in LotusNotes dann
'''## Anfang ###
''' Mail speichern und zur Bearbeitung stellen
' Call NotesDocument.Save(False, False, False)
' On Error Resume Next
' Dim ws As Object
' Set ws = CreateObject("notes.notesuiworkspace")
' Call ws.EDITDOCUMENT(True, NotesDocument).GoToField("Body")
'''Meldung wenn fertig muss nicht sein
' MsgBox "Die e-mail ist erstellt!.", vbInformation, "E-mail versenden..."
''' Aufruf Lotus Notes in den Vordergrund
' AppActivate ("Lotus Notes")
'#### Ende ###

'Aufräumen
Set NotesSession = Nothing
Set NotesMailFile = Nothing
Set NotesDocument = Nothing
Set NotesField = Nothing

Exit Sub
err:
MsgBox "Die e-mail ist nicht erstellt!.", vbInformation, "E-mail versenden..."
Exit Sub

End Sub

Private Sub Cmd_Exit_Click()
Unload Me
End Sub
'---------- Ende Formular "Form1" alias Form1.frm ----------
'-------------- Ende Projektdatei Projekt1.vbp --------------

Kommentar von Kurt-W. Rosar am 18.08.2006 um 11:20

Vielen Dank für die Hilfe.

mfg.
Kurt-W. Rosar

Kommentar von Uli am 18.08.2006 um 10:51

Habe dasselbe Problem wie André Frenster. Seit Installation von Lotus V6 erhalte ich die Fehlermeldung:
"Rich text item Attachment already exists". Gibt's dafür eine Lösung?

Kommentar von Kurt-W. Rosar am 14.08.2006 um 13:57

Hallo,

ich setze diese Funktion unter VB.NET ein, und will mehrere gleiche mails hintereinander senden, leider erhalte ich eine Fehlermeldung (im .Send(False)):
"Notes error: Datenbank enthält bereits ein Dokument mit dieser ID (UNID)".

Hier die Function:

Private Function SendEmailByLotusNotes(ByVal sFrom As String, ByVal sTo As String, ByVal sSubject As String, ByVal sBody As String) As Boolean
' Sende eine E-Mail mit Lotus Notes
Dim bres As Boolean = True
Dim sReplyTo As String = Trim(TextDef_getValOfId("TEDEREPLY"))
Dim Message As System.Web.Mail.MailMessage
Dim bMelden As Boolean = True
Try
' ins Log
Dim s As String = "Sending Email by LotusNotes: From=" & sFrom & " to=" & sTo & " subject=" & sSubject & " body = " & deleteCrLf(sBody)
showMsg(s, MdlSimpleFkt.showMsgOption.smoInfo)
' ausführen
Message = New System.Web.Mail.MailMessage
Message.To = sTo
Message.From = sFrom
Message.Subject = sSubject
Message.Body = sBody
Catch ex As System.Exception
If bMelden Then
showMsg("Lotus Notes vorbereiten: " & ex.ToString, MdlSimpleFkt.showMsgOption.smoExcp)
bMelden = False
End If
bres = False
End Try

Try
Dim EmbeddedObject As Object
Dim SessionNotes As Object, NotesDB As Object, NotesDoc As Object
'
' An die laufende Lotus Notes Session anhängen
Try
SessionNotes = CreateObject("Notes.NOTESSESSION")
Catch ex As System.Exception
' Display text of unknown error.
Throw New System.Exception("Das Programm Notes zum Versenden von E-Mail ist nicht verfügbar. " + ex.ToString)
End Try
'
' Notes Datenbank-Objekt erstellen und initialisieren
Try
NotesDB = SessionNotes.GetDatabase("", "")
Catch ex As Exception
If bMelden Then
showMsg("Error calling SessionNotes.GetDatabase: " & ex.ToString, MdlSimpleFkt.showMsgOption.smoExcp)
bMelden = False
End If
End Try
Try
NotesDB.OPENMAIL()
Catch ex As Exception
If bMelden Then
showMsg("Error calling NotesDB.OPENMAIL: " & ex.ToString, MdlSimpleFkt.showMsgOption.smoExcp)
bMelden = False
End If
End Try
Try
If NotesDB.ISOPEN = False Then
showMsg("Bitte melden Sie sich zunächst vollständig in Notes an!", _
MdlSimpleFkt.showMsgOption.smoInfo)
Return False
End If
Catch ex As Exception
If bMelden Then
showMsg("Error calling NotesDB.ISOPEN: " & ex.ToString, MdlSimpleFkt.showMsgOption.smoExcp)
bMelden = False
End If
End Try '
' Neues Notes-Dokument anlegen (Mail)
Try
NotesDoc = NotesDB.CreateDocument
Catch ex As Exception
If bMelden Then
showMsg("Error calling NotesDB.CreateDocument: " & ex.ToString, MdlSimpleFkt.showMsgOption.smoExcp)
bMelden = False
End If
End Try '
With NotesDoc
Try
.Form = "Memo"
.Subject = Message.Subject
.sendto = Message.To
'.copyto = ' Kopie an
'.blindcopyto= Blindkopie an
.body = Message.Body
'.DefaultMailSaveOption = 0
'.MailSaveOption = 0
'.DeliveryReport = "B"
'.Importance = "2"
'.logo = "Scania"
.SAVEMESSAGEONSEND = True ' bei True wird ein Exemplar in Notes in Gesendet gestellt
'.ReturnReceipt = "1"
.Sign = "1"
'.encrypt ="0"
'.Principal = session.UserName
'.viewicon ="74"
.from = Message.From
'.SaveOptions = 0
'.SecureMail = ""
'.SenderTag = "F"
Catch ex As Exception
If bMelden Then
showMsg("Error Setting Email Parameters: " & ex.ToString, MdlSimpleFkt.showMsgOption.smoExcp)
bMelden = False
End If
End Try

Try
If sReplyTo <> "" Then
.ReplyTo = sReplyTo
End If
Catch ex As Exception
If bMelden Then
showMsg("Error Setting ReplyTo: " & ex.ToString, MdlSimpleFkt.showMsgOption.smoExcp)
bMelden = False
End If
End Try

'''''''''''''' Dateianhang'''''''''''''''''
'If Trim$(MailAnhang) <> "" Then
'Const embed_ATT = 1454
'rtitem = .CreateRichTextItem(MailAnhang)
'EmbeddedObject = rtitem.EmbedObject(embed_ATT, "", MailAnhang, MailAnhang)
'End If
''''''''''''''''''''''''''''''''''''''''''
Try
.Send(False) ' senden
Catch ex As Exception
If bMelden Then
showMsg("Error calling NotesDoc.Send: " & ex.ToString, MdlSimpleFkt.showMsgOption.smoExcp)
bMelden = False
End If
End Try
End With

SessionNotes = Nothing
NotesDB = Nothing
NotesDoc = Nothing
EmbeddedObject = Nothing
Catch ex As System.Exception
' Display text of unknown error.
If bMelden Then
showMsg(ex.ToString, MdlSimpleFkt.showMsgOption.smoExcp)
bMelden = False
End If
bres = False
End Try
Return bres
End Function


Bitte um Hilfe oder Tips.

mfg.
Kurt-W. Rosar

Kommentar von Andre Frenster am 20.06.2006 um 08:39

Hallo,
der Tipp hat mir sehr gut geholfen (VB6 / Windows XP). Leider haben wir nun eine neue Version von Lotus Notes (V6.5.3) eingeführt und das verschicken von Anhängen funktioniert nicht mehr. Folgende Fehlermeldung erhalte ich:
Rich text item Attachment already exists.
Können Sie mir weiterhelfen?

Danke und Gruß
André Frenster

Kommentar von fian04 am 09.12.2005 um 08:02

Ich würde auch gerne eine Signatur anhängen können. Ist das möglich

Kommentar von stefan m. am 01.12.2005 um 15:13

Wie kann man eine Signatur anhängen?

Kommentar von beginner am 23.11.2005 um 13:23

HELP!

bin VBA Anfänger ... kann ich eine bestimmte Datei als Attachment anhängen??

lieben Dank,
Monika

Kommentar von fian03 am 17.11.2005 um 10:22

Hallo,

bisher hat der Code oben in meinem Projekt wunderbar funktioniert. Jetzt haben wir auf die Version 6.5 umgestellt und nun funktioniert das anhängen von Dateien nicht mehr. Ich bekomme folgende Meldung:

7368 - Rich text item Attachment already exists.

Der code wurde aber NICHT verändert und die Datei wird auch nicht doppelt angehängt. Jemand eine Idee?

Danke und Gruß
fian03

Kommentar von Timo Bakenecker am 04.11.2005 um 12:13

Hallo,

wie kann ich statt normalem PLAIN text HTML-Tags verwenden und den Body als HTML versenden ?

Gruß,
Timo

Kommentar von Kai am 08.10.2005 um 16:53

Hallo Stefan,

Empfangsbestätigung anschalten:
MailDoc.ReplaceItemValue("ReturnReceipt", "1")

Empfangsbestätigung abschalten:
MailDoc.RemoveItem("ReturnReceipt")

MfG
Kai

Kommentar von Stefan am 30.09.2005 um 10:58

Hallo zusammen,

ich hätte da ebenfalls das dringende Bedürfnis bei den per VBA verschickten Mails die Empfangsbestätigung im Code zu aktivieren zu können.

Leider finde ich keine Doku zu Notes Object bzw. der entsprechenden EIgenschaft.

Für Tipps wäre ich sehr dankbar!
Grüße,
Stefan

Kommentar von Hannah am 02.05.2005 um 14:14

HAllo

Von Judith kam die Frage:

" Hallo,
ich würde gern bei den Zustelloptionen "Empfangsbestätigung" angeben. Gibt es eine Eigenschaft, die das regelt wenn ja, wie heißt sie?
Schonmal danke im Voraus!"

Das würde mich auch interessieren. Kennt jemand die Antwort?

Kommentar von Manuel Pluess am 10.02.2005 um 16:19

Weiss jemand, wie man aus einer Excel-Datei einen Bereich kopiert mit copy und diesen in den Textbereich eines E-Mails einfügt?
Danke im Voraus und Gruss
Manuel

Kommentar von Mirko am 24.11.2004 um 17:54

Bei dem Punkt
Call Session.Initialize(strPassword)
kommt die Meldung "das object unterstützt die Methode oder Eigenschaft session.Initialize nicht"

Wie kann ich sonst das Passwort meiner Notes.ID beim start übergeben?

Grüße
Mirko

Kommentar von Judith am 02.06.2004 um 12:59

Hallo,
ich würde gern bei den Zustelloptionen "Empfangsbestätigung" angeben. Gibt es eine Eigenschaft, die das regelt wenn ja, wie heißt sie?
Schonmal danke im Voraus!

Kommentar von Stefan am 21.05.2004 um 15:48

Tag,

ich würde Notes gerne noch derart überlisten, dass der BodyText auch VOR anstatt nach meiner Standard-Signatur eingefügt wird..(?!)

Jemand einen Tipp?

Danke im Voraus, Stefan

Kommentar von Tommy am 21.05.2004 um 12:18

Um die erstellte Mail vor dem Absenden noch editieren zu können einfach den Senden-Teil weglassen, stattdessen folgenden Code hinzufügen:

Dim Workspace As Object
Set Workspace = CreateObject("Notes.NotesUIWorkspace")
Call dWorkspace.EditDocument(True, MailDoc).GotoField("Body")

Kommentar von mischa richter am 13.03.2004 um 11:00

hallo, wo nur finde ich einen tip, wie ich mit VB 6.0 Lotus 123 tabellen erstelle, öffne,ändere, etc.
danke, Mischa

Kommentar von Steffen am 19.02.2004 um 15:24

Hi,

mit Maildoc.Copyto kann man das CC-Feld füllen.

Gruß Steffen

Kommentar von Robert Assum am 11.02.2004 um 13:52

Hallo,

vielen Dank für den Code. Erweist mir echt gute Dienste. Schickne nun meine Mails direkt aus Excel. Hat vielleicht jmd. eine ausführliche Doku über das Notes Object? Wäre ganz nett.

In diesem Sinne,

danke nochmal

Robert

Kommentar von NoNet am 09.02.2004 um 11:05

Hallo Autor,

bin gerade dabei, per Excel VBA Mails zu versenden (Notes Client). Das Versenden klappt grundsätzlich, nur weiß ich nicht, wie man das CC und das BCC-Feld definiert.
Maildoc.SendToCC und Maildoc.CC oder Maildoc.Copy scheint nicht zu funktionieren. Hast Du evtl. einen Tipp für mich ?
Vielen Dank im Voraus,

Gruß, NoNet

Kommentar von Mithrandir am 06.02.2004 um 10:44

Hallo, versuche das ganze in Access VBA zu machen
OS: WinNT4 mit Access97
bis auf Notes öffnen bekomm ich gar nichts hin
kann es sein dass es mit VBA nich funktioniert?

danke!

Kommentar von Disaster am 15.12.2003 um 11:53

Hi..

Weiß vielleicht jemand wie man die E-mail Signatur an machen kann?

mfg
Disaster

Kommentar von Peter am 05.12.2003 um 16:44

Das funktioniert auch mit Access XP auf Windows XP.
Herzlichen Dank.

Kommentar von Arne am 18.07.2003 um 16:05

Hallo,

kann jemand die von mir und Michael gestellte Frage beantworten?

"Ist es möglich sich bevor Notes das ganze wegsendet noch die Mailform (also die originale von Notes) zur Überprüfung anzeigen zu lassen und dann durch klick auf senden wegzuschicken ?"

Danke im Voraus!

Kommentar von Fizzi am 11.04.2003 um 11:19

Laeuft unter XP, VB6SP5, Notus Lotes 5.09

Referenziere das file: domobj.tlb

Dim Session As NotesSession 'The session
Dim Maildb As NotesDatabase 'The mail database
Dim UserName As String 'The current users notes name
Dim MailDoc As NotesDocument 'The mail document itself

'Start a session to notes
Set Session = New NotesSession
Call Session.Initialize(strPassword)
If Trim(form1.efaba.Text) = "" Then MsgBox ("Verdammi, what's your subject?")
If Trim(form1.efmail.Text) = "" Then MsgBox ("Verdammi, what's your text?")
UserName = Session.UserName
Set Maildb = Session.GetDatabase("", "names.nsf")
If Maildb.IsOpen = True Then
'Already open for mail
Else
Call Maildb.Open
End If

'Set up the new mail document
Set MailDoc = Maildb.CreateDocument
Call MailDoc.ReplaceItemValue("Body", Form1.efmail.Text)
Call MailDoc.ReplaceItemValue("Subject", Form1.efaba.Text)
Call MailDoc.ReplaceItemValue("SendTo", Form1.efaddr.Text)
'Call MailDoc.ReplaceItemValue("Recipient", Form1.efaddr.Text)
'Call MailDoc.ReplaceItemValue("Form", "Memo")
'MailDoc.Send true
MailDoc.Send False
Set MailDoc = Nothing
Set Maildb = Nothing
Set Session = Nothing

Kommentar von fizzi am 09.04.2003 um 20:07

ich erhalte auf der Zeile:
Set Session = CreateObject("Notes.NotesSession")
bzw.
Set Session = CreateObject("Lotus.NotesSession")
die Fehlermeldung:
Run-time error: '429'
ActiveX component can't create object
ich benutze XP, VB6sp5 und Notes 5.09

Was mach ich falsch? Kann mir da jemand helfen?

Kommentar von Michael am 22.01.2003 um 23:16

Hallo habe dazu eine Frage:
Ist es möglich sich bevor Notes das ganze wegsendet noch die Mailform (also die originale von Notes) zur Überprüfung anzeigen zu lassen und dann durch klick auf senden wegzuschicken ?

Vielen Dank.

Kommentar von Bernhard am 08.01.2003 um 13:55

Funktioniert nur mit 1 Empfänger

Kommentar von Uwe Hiss am 11.12.2002 um 15:21

Hallo
Habe den Quellcode/das Proggi leicht verändert im Einsatz, d.h. ich lasse mir vom entfernten Client seine aktuelle IP im Net zuschicken. Dies funktionierte bisher tadelos! Nun quitiert mir das Programm den Senden-Befehl mit:
"ActivX can´t create object"
Wäre für Tips und Hinweise sehr dankbar :-)

Uwe Hiss