Autor Thema: VBA Email automatisch generieren, aber ohne Standard-Signatur  (Gelesen 17345 mal)

Offline Kommodore

  • Frischling
  • *
  • Beiträge: 10
Hallo Zusammen,
ich nutze folgenden Quelltext aus dem Beispiel umgesetzt mit VBA:
http://www.activevb.de/tipps/vb6tipps/tipp0544.html

Problem: Beim generieren der Email wird die Standard-Signatur des jeweiligen Users
gezogen und vor dem eigentlichen Body eingefügt. Wie kann ich dies umgehen oder den Body (ohne Signatur)
löschen oder aufrufen.
"MailDoc.body = BodyText" hier wird der Body mit dem Text initialisiert und trotzdem wird die Signatur vorher eingefügt.

2. Wenn ich den Versender ändern möchte
"MailDoc.principal = "testVersnder@mail.de" wird immer der User der .nsf-Datei gezogen und nicht
die testVersnder@mail.de Adresse?

Vielen Dank im Voraus.



Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Den Absender von Mails zu faken ist nicht trivial, und eigentlich nicht vorgesehen. Entweder man erstellt die mail direkt in der mail.box des servers, oder man muss verschiedene felder setzen aber immer mit der globalen domain gesetzt, also statt: tido.test@test.de als Absender steht dann da tido.test@test.de@deineDominoDomain. Dann hat man aber keinen 100% Fake sondern sieht immer irgendwo den tatsächlichen ersteller der Mail. Zur automatischen Signatur: das kommt nicht von deinem code,sondern wird wohl auf dem Server angehängt.
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Kommodore

  • Frischling
  • *
  • Beiträge: 10
Besteht die Möglichkeit ohne den Pfad der *.nsf - Datei anzugeben den Absender zu ändern?
oder besteht die Möglichkeit generell nur Emails mit Lotus Notes zu versenden über die Anmeldung an einer
*.nsf-Datei??

Da ich den Pfad (nur Unix-Pfade und keine klassischen Windows-Pfade zur Verfügung habe) nicht kenne, möchte ich gerne Emails mit Lotus Notes versenden und den Absender
entsprechend abändern?

Ist dies ohne weiteres Möglich??

Mit freundlichen Grüßen
Kommodore






Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Nein. Ein notesdocument ist IMMER in einer NotesDatabase. Du brauchst also auf jeden Fall den Pfad zu EINER Datenbank. Wie die aber heisst, ist für Dein Vorhaben vollkommen unerheblich, weil das Faken von Mails in Notes eben einfach nicht so mal eben möglich ist. Und das ist gut so und vollkommen unabhängig davon, In welcher Datenbank Du die mail erstellst... Na ja fast eben... Wenn Du das Dokument in der mailbox des Servers erstellst (kann je nach Severkonfiguration mail.box oder mail1.box heissen), dann kann man schon recht gut faken... Wenn man weiss, was man tut. Und spätestens hier solltest Du Dir einen Notes- Entwickler- Kurs zahlen lassen, oder eben jemanden fragen, der sich auskennt... Denn hier Ziehe ich mich aus diesem thread zurück (verdiene mein Geld mit dem Programmieren solcher Lösungen)
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Glombi

  • Gast
Da das ganze komplett im Backend stattfindet, wird die Signatur "irgendwie" eingesetzt, so wie es Tode bereits geschrieben hat. D.h. "irgendwo" muss gesteuert werden, welche personalisierte Singatur eingefügt wird. Dazu wird "irgendein" Feld in dem Memo ausgewertet, bspw. "Principal". Daher gilt es, dieses Feld zu identifizieren und im Programmcode zu ändern.
bspw. so

MailDoc.Form = "Memo"
MailDoc.Principal = "<Dein gewünschter Absender im Notes Format@EureNotesDomäne>"
MailDoc.InetFrom = "<Dein gewünschter Absendet im Internetformat>"
....

siehe bspw. hier
http://www.codestore.net/store.nsf/unid/BLOG-20060321

Andreas

Offline Kommodore

  • Frischling
  • *
  • Beiträge: 10
Das nachfolgend beschriebene Problem tritt nur beim Generieren der Email in Lotus Notes auf.

Problem: Beim generieren der Email wird die Standard-Signatur des  jeweiligen Users aus der nsf-Datei
gezogen und vor dem eigentlichen Body eingefügt. Wie kann ich dies umgehen oder den Body (ohne Signatur)
löschen oder aufrufen.
"MailDoc.body = BodyText" hier wird der Body mit dem Text initialisiert und trotzdem wird die Signatur vorher eingefügt.

Gibt es nicht die Möglichkeit den Body zu löschen oder zu blanken?
so etwas wie MailDoc.body = Null oder MailDoc.body = ""
Oder eben die automatische Signierung zu deaktivieren, den Body einzufügen und dann die automatische Signierung wieder zu aktivieren?

Viele Grüße und ein schönes WE, Danke.
 

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Nochmal: Das hinzufügen der Signatur wird an einer Stelle geregelt, auf die Du keinen Einfluss hast. und zwar NACHDEM Du Deine Mail versendet hast...

Das ganze wird im Normalfall über Policies geregelt, so dass Du das auch nicht mal kurz disablen kannst für die eine Mail...

Ohne die Hintergründe in Lotus Notes zu verstehen wirst Du so nicht weiter kommen.

Die nächste Frage, die Du uns stellen wirst ist dann: Jetzt habe ich die Mail so, wie ich sie will, aber da steht immer "Gesendet von:", obwohl ich doch alle Absenderfelder sauber gesetzt habe (vorausgesetzt der User der das Script ausführt ist ein anderer als der gewünschte Absender)...

Oder: Antworten landen immer bei mir in der Inbox...
Oder: Meine Mails bleiben in unserem internen Mailfilter als "Unknown sender" hängen..
Oder .....

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Kommodore

  • Frischling
  • *
  • Beiträge: 10
Moment, die Email wurde noch nicht versendet, sondern vorerst nur generiert als "neues Memo".

Das Versenden funktioniert über die nsf-Datei einwandfrei. (Versenden ist gelöst)

Doch das Problem ist nun nur die Signatur, die vor dem Body eingefügt wird und nicht wie gewollt nach dem Body-Text.

MailDoc.body = BodyText 'an dieser Stelle übergebe ich den eigenen Text und generiere dann den Body, doch die Signatur steht leider immer noch vor diesem eigenen Text.

Viele Grüße Kommodore



Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Dann verwendest Du anderen Code als den verlinkten: Der verlinkte Code versendet die Mail im Backend... Wenn das Ding als "Neues Memo" im Frontend geöffnet wird, dann ändert das ALLES...

Aber so langsam verliere ich ehrlich gesagt die Lust...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Vielleicht ist auch in der (angepassten?) Maildatenbank eine Funktion enthalten, die beim Öffnen einer neuen Mail (wie immer "neu" definiert sei) eine Signatur vor das Body-Feld schreibt. Klingt evtl. sinnvoll bei Antworten mit Protokoll.

Lass mal den Schritt mit dem Öffnen der Mail weg und schau in der Felderliste des geschlossenen Dokuments nach dem Inhalt von Body. Wenn dort keine Signatur enthalten ist, passiert es beim Öffnen.

Offline Kommodore

  • Frischling
  • *
  • Beiträge: 10
Re: VBA Email automatisch generieren, aber ohne Standard-Signatur
« Antwort #10 am: 03.04.12 - 14:47:26 »
Hallo,
Zitat
schau in der Felderliste des geschlossenen Dokuments nach dem Inhalt von Body. Wenn dort keine Signatur enthalten ist, passiert es beim Öffnen.
Besteht die Möglichkeit diesen Punkt ausführlicher zu beschreiben, vielen Dank!

Ich habe den Quelltext nicht 1 zu 1 übernommen, da ich die Emails erst generieren lasse, um zu sehen wie die Email
zusammengesetzt wird oder wurde nach der Verarbeitung. Die Änderung zu dem o.g. Quelltext habe ich in
'**************
eigene Anpassung
'**************
gesetzt. Vielleicht liegt es ja da dran!?

Im unterem Beispiel wird eine eigene Signatur im Body angefügt. Trotzdem wird die nicht-gewollte Standard-Signatur des Users vor dem Body eingefügt.

Die Idee ist ja eine eigene Email zu generieren mit eigener Signatur, ohne das Einfügen der Standard-Signatur vor dem generierten Body.

Code
Function SendMail(Betreff As String, Email As String, Emailtext As String, Zusatztext As String, Attachment As String, Signatur As String)
    On Error Resume Next
    
        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 
        Dim Session As Object 'Die Notes Session
        Dim EmbedObj As Object 'Ein eingebettetes Objekt (Anhang)
        Dim SaveIt As Boolean
        
        Dim Subject As String
        Dim Attachment2 As String
        Dim Recipient As String
        Dim cc As String
        Dim BodyText As String

        Subject = Betreff
    
        'Empfänger der Email
        Recipient = Email
        
        'Kopie der Email
        cc = ""
        
        'Emailtext
        BodyText = Emailtext & Chr(13) & Chr(13) & Zusatztext & Chr(13) & Chr(13) & Signatur
        
        Dim filename As String
        Dim numrows As Long
        Dim numcols As Integer
        Dim R As Long
        Dim c As Integer
        Dim data
            'Die Session starten
        Set Session = CreateObject("Notes.NotesSession")
        UserName = Session.UserName
           
        'Datenbankzugriff
        MailDbName = "Pfad der Datenbank.nsf"z.B. C:\Datenbank.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 & ", " & cc
        
        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
    	
        '****************************************************
        Dim Workspace As Object
        Set Workspace = CreateObject("Notes.NOTESUIWORKSPACE")
        Call Workspace.EDITDOCUMENT(True, MailDoc).GOTOFIELD("Body")
        '****************************************************
    
        MsgBox ("Die Mail wurde erstellt")
        '-------------------------
        'Bis hier wurde die Mail erstellt und noch nicht versandt.
        'MailDoc.SEND 0, Recipient 'Das Versenden ist auskommentiert.
        '-------------------------
        'Aufräumen
        Set Maildb = Nothing
        Set MailDoc = Nothing
        Set AttachME = Noth
        Set Session = Nothing
        Set EmbedObj = Nothing
End Function

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: VBA Email automatisch generieren, aber ohne Standard-Signatur
« Antwort #11 am: 03.04.12 - 15:01:18 »
Ein im Backend erzeugtes Dokument, noch nicht gespeichert und dann im Frontend sogar im EditMode geöffnet - völlig logisch, dass dann die Signaturroutine der MailDB anspringt ...

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: VBA Email automatisch generieren, aber ohne Standard-Signatur
« Antwort #12 am: 03.04.12 - 15:08:50 »
Hallo,
Zitat
schau in der Felderliste des geschlossenen Dokuments nach dem Inhalt von Body. Wenn dort keine Signatur enthalten ist, passiert es beim Öffnen.
Besteht die Möglichkeit diesen Punkt ausführlicher zu beschreiben, vielen Dank!
Ich ging davon aus, dass das Dokument vor dem Öffnen gespeichert wird.

Ändere Deine Routine so, dass das Dokument (die Mail) gespeichert wird, aber nicht geöffnet. Dann gehst Du in die Maildatenbank, in der das neue Dokument ist. Dokument markieren (nicht öffnen), Alt+Enter (oder rechte Maus und Eigenschaften Dokument), zweite Lasche Felder (die Lasche mit dem Dreieck), darin nach dem Feld Body suchen (linke Seite) und auf der rechten Seite nach dem Wert sehen.

Offline Kommodore

  • Frischling
  • *
  • Beiträge: 10
Re: VBA Email automatisch generieren, aber ohne Standard-Signatur
« Antwort #13 am: 04.04.12 - 17:50:17 »
Vielen Dank für die schnellen Antworten!
Die Lösung ist wieder mal logisch, wenn man weiß wonach man suchen muss, vielen Dank!
        '****************************************************
        'Dim Workspace As Object
        'Set Workspace = CreateObject("Notes.NOTESUIWORKSPACE")
        'Call Workspace.EDITDOCUMENT(True, MailDoc).GOTOFIELD("Body")
        '****************************************************
Einach die 3 Zeilen auskommentieren, dann wird die Standard-Signatur nicht gezogen!!!  :)
Sondern die Email wird ohne Standard-Signatur generiert und verschickt.
Danke. Viele Grüße Kommodore





Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: VBA Email automatisch generieren, aber ohne Standard-Signatur
« Antwort #14 am: 04.04.12 - 17:54:28 »
Hättest Du den Code in der Eröffnung gepostet, wäre die Lösung in Antwort #1 gekommen  ;)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz