Hallo,
ich probiere automatisiert eine Email über Lotus Notes zu versenden. Das funktioniert soweit auch. Das einzigste was ich nicht hin bekomme ist die Signatur vorher auszulesen und an die Nachricht zu hängen. Das Logo funktioniert komischerweise.
Den Code habe ich von VBA übersetzt. Da funktioniert es mit der Signatur.
Danke für eure Hilfe.
Gruß Thomas
AutoIt
#include <date.au3>
#include <file.au3>
Global $recipient, $Subject, $bodytext, $attachment, $saveit = "True", $Signature = ""
$recipient = "123@123.de"
$Subject = "123"
$bodytext = "123"
SendNotesMail($recipient, $Subject, $bodytext, $attachment, $saveit)
Func SendNotesMail($recipient, $Subject, $bodytext, $attachment, $saveit)
$Session = ObjCreate("Notes.NotesSession")
$UserName = $Session.UserName
$MailDbName = StringLeft($UserName, 1) & StringRight($UserName, (StringLen($UserName) - StringInStr(1, $UserName, " "))) & ".nsf"
$Maildb = $Session.GETDATABASE("", $MailDbName)
If $Maildb.IsOpen = 1 Then
Else
$Maildb.OPENMAIL()
EndIf
$MailDoc = $Maildb.CREATEDOCUMENT
$MailDoc.Form = "Memo"
$MailSignature = $Maildb.GetProfileDocument("CalendarProfile")
;MsgBox("","",$MailSignature.GetItemValue("Signature"))
$MailDoc.Logo = $MailSignature.GetItemValue("DefaultLogo")
$MailDoc.sendto = $recipient
$MailDoc.Subject = $Subject
$MailDoc.SAVEMESSAGEONSEND = $saveit
$Body = $MailDoc.CREATERICHTEXTITEM("Body")
$Body.AppendText($bodytext)
If $attachment <> "" Then
If FileExists(@ScriptDir & "" & $attachment) Then
$filename = $attachment
$fullpath = @ScriptDir & "" & $attachment
ElseIf FileExists($attachment) Then
$pos = StringInStr($attachment, "", 0, -1)
$filename = StringTrimLeft($attachment, $pos)
$fullpath = $attachment
Else
MsgBox(0, "LoNo Error", "attachment not found")
Exit
EndIf
$EmbedObj = $Body.EMBEDOBJECT(1454, "", $fullpath, $filename)
EndIf
$Body.AppendText($Signature)
$MailDoc.PostedDate = _Now()
$MailDoc.SEND(0, $recipient)
$Maildb = "NULL"
$MailDoc = "NULL"
$AttachME = "NULL"
$Session = "NULL"
$EmbedObj = "NULL"
EndFunc
Alles anzeigen
Bash
Public Function NotesMailSend(aRec As Variant, Optional cc As Variant, _
Optional bcc As Variant, _
Optional strBetreff As Variant, _
Optional strText As Variant, _
Optional strMsg As Variant, _
Optional strAtt As String)
Dim objNotes As Object, objNotesDB As Object, objNotesMailDoc As Object, objNotesMailProfileDoc As Object
Dim SendItem, NCopyItem, BlindCopyToItem, i As Integer, rtitem, rtitem1
'MsgBox aRec 'Empfänger anzeigen
' Zuweisung der Objektvariablen
Set objNotes = GetObject("", "Notes.Notessession")
Set objNotesDB = objNotes.GETDATABASE("", "")
' Öffnen der Standard-Maildatenbank / Erstellen neues Maildokument
Call objNotesDB.OPENMAIL
Set objNotesMailDoc = objNotesDB.CREATEDOCUMENT
objNotesMailDoc.Form = "Memo"
'Signatur Notes holen
Dim StrSignature As String
StrSignature = Chr(10) & Chr(10) '& Chr(10) & Chr(10) & objNotesDB.GetProfileDocument("CalendarProfile").GetItemValue("Signature")(0)
'Profildokument holen und im Speicher halten
Set objNotesMailProfileDoc = objNotesDB.GetProfileDocument("CalendarProfile")
StrSignature = StrSignature & objNotesMailProfileDoc.GetItemValue("Signature")(0)
objNotesMailDoc.Logo = objNotesMailProfileDoc.GetItemValue("DefaultLogo")(0)
'Call objNotesMailDoc.Save(False, False)
Set SendItem = objNotesMailDoc.APPENDITEMVALUE("SendTo", "")
Set NCopyItem = objNotesMailDoc.APPENDITEMVALUE("CopyTo", "")
Set BlindCopyToItem = objNotesMailDoc.APPENDITEMVALUE("BlindCopyTo", "")
objNotesMailDoc.SendTo = Split(aRec, ";") 'aRec
objNotesMailDoc.CopyTo = Split(cc, ";")
objNotesMailDoc.BlindCopyTo = Split(bcc, ";")
objNotesMailDoc.Subject = strBetreff
Set rtitem = objNotesMailDoc.CreateRichTextItem("Body")
With rtitem
.AppendText (strText)
If strAtt <> "" Then
Call rtitem.EmbedObject(1454, "", strAtt)
End If
.AppendText (StrSignature)
.AddNewLine (1)
End With
'objNotesMailDoc.BodY = strText & StrSignature
rtitem.AddNewLine (1)
' Mail zustellen
objNotesMailDoc.PostedDate = Now
Call objNotesMailDoc.Save(False, False)
Call objNotesMailDoc.SEND(False)
objNotesMailDoc.RemoveItem ("DeliveredDate")
'1. true steht für nicht speichern in Entwürfen
Call objNotesMailDoc.Save(True, False)
' Nachricht an Benutzer
MsgBox strMsg, vbInformation, "Notesmail versenden..."
' Objektvariablen zurücksetzen
Call objNotes.Close
Set objNotesDB = Nothing
Set objNotesMailDoc = Nothing
Set objNotes = Nothing
End Function
Alles anzeigen