Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Bruce Willis am 11.08.04 - 22:44:36

Titel: Mail per LS verschicken
Beitrag von: Bruce Willis am 11.08.04 - 22:44:36
Hallo,

durch Klicken auf den Button mit u.g. LS wird Email aus einer Mailin-DB verschickt. Die Felder werden aus dem entsprechenden Dokument mit dem Button übernommen. Das Dokument wird danach gespeichert und geschlossen. Alles funktioniert perfekt. Aber...

Weiß jemand, was und wohin ich schreiben soll, um zwei folgende Sachen zu kriegen?

1. Auswahl-Box "Nicht eindeutige Mail-Adresse" o.ä. falls ein Empfänger im Domino-Adressbuch eine Adresse hat und im Privat-Adressbuch des Absenders eine andere. (Im Moment kommt nur die Fehlermeldung ohne Auswahlmöglichkeit)

2. Popup-Fenster "Email erfolgreich verschickt" o.ä. nachdem E-Mail auch verschickt wurde.

Danke im Voraus.

Bruce

**********************
Sub Click(Source As Button)
   Dim ws As New notesuiworkspace
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim UIDoc As notesuidocument  'Aktuelles Dokument im Frontend
   Dim doc As notesdocument   'Aktuelles Dokument im Backend
   Dim TicketNr, UserTech, Subject, UserReg, Priority As String
   
   Set UIdoc=ws.CurrentDocument
   Set doc=uidoc.Document
   Set db= session.CurrentDatabase
   Set Message=New NotesDocument(db)    'Mail erstellen
   Set rtitem = New NotesRichTextItem( Message, "Body" )
   
   TicketNr=uidoc.FieldGetText("RequestNumber")
   Subject=uidoc.FieldGetText("Subject")
   UserReg=uidoc.FieldGetText("User_Req")
   Priority=uidoc.FieldGetText("Priority")
   NewProcess=uidoc.FieldGetText("NewProcess")
   Status=uidoc.FieldGetText("Status")
   
   Message.Form="Memo"
   Message.Principal="Bruce Willis/Germany"
   
   If doc.warn_usr_req(0)="Y" Then
      Message.SendTo=doc.User_Req   
      Message.Subject = "Ticket: " & TicketNr & " - Frage/Info. (Prio: " & Priority & ") für " & UserReg & " , Status: " & Status
      Call rtitem.AppendText( "Durch Klicken auf den u.g. Link wird das Ticket geöffnet. " )
      Call rtitem.AddNewLine( 1 )
      Call rtitem.AddNewLine( 1 )
      Call rtitem.AppendText("Frage/Info: " & NewProcess)
      Call rtitem.AddNewLine( 1 )
      Call rtitem.AddNewLine( 1 )
      Call rtitem.AppendText("Thema: " & Subject)
      Call rtitem.AddNewLine( 1 )
      Call rtitem.AppendText("Link zum Ticket --> ")
      Call rtitem.AppendDocLink( doc, "" )
      Call Message.Send( False )
   End If
      
   Call uidoc.Save
   Call uidoc.Close
End Sub
Titel: Re:Mail per LS verschicken
Beitrag von: TMC am 11.08.04 - 22:51:41
1. Auswahl-Box "Nicht eindeutige Mail-Adresse" o.ä. falls ein Empfänger im Domino-Adressbuch eine Adresse hat und im Privat-Adressbuch des Absenders eine andere? (Im Moment kommt nur die Fehlermeldung ohne Auswahlmöglichkeit)

2. Popup-Fenster "Email erfolgreich verschickt" o.ä. nachdem E-Mail auch verschickt wurde.

Auf die schnelle, Leo:

Provoziere den Fehler "Nicht eindeutige Mail-Adresse", damit Du den Fehlercode rausfindest.

Dann ein Errorhandling in dem Code.

ExitScript:
   Exit Sub

ErrorHandler:
   Select Case Err
   Case 123456 'Das ist der Fehler "Nicht eindeutige Mail-Adresse"
      Msgbox "Nicht eindeutige Mail-Adresse", 64, db.title      
      Resume exitScript
   Case Else
      Call DisplErrorMsg 'Hier Deine ErrorHandling - Sub....
      Resume ExitScript    
   End Select
Titel: Re:Mail per LS verschicken
Beitrag von: Bruce Willis am 11.08.04 - 22:56:34
mmmmm... eeeeee....

Matthias, danke für deine super schelle Antwort!

Kannst du bitte zusätzlich ein bißchen langsamer erklären, was und wochin damit?  ;)
Titel: Re:Mail per LS verschicken
Beitrag von: TMC am 11.08.04 - 22:59:59
An's Ende des Codes (vor End Sub).

Ganz am Anfang des Codes noch ein "On Error goto ErrorHandler".

Du brauchst dann noch eine ErrorHandler-Routine.

Was ich jetzt nicht weiss wie Du hier eine Auswahlmöglichkeit bereitstellen kannst. Im gegebenem Beispiel wird dann das Senden nur geblockt (Exit Sub).

Titel: Re:Mail per LS verschicken
Beitrag von: TMC am 11.08.04 - 23:05:45
Hier noch eine ErrorMessage Sub. Am besten in eine ScriptLib kopieren. Und "%INCLUDE "lsconst.lss" " in den Options ergänzen. Oder Du wirfst Getthreadinfo( raus (ist eh nicht immer zuverläsig).

Sub DisplErrorMsg
   Dim strTitle As String
   Dim strMsg As String
   Dim vProcedure As Variant   
   
   vProcedure = Getthreadinfo( LSI_THREAD_CALLPROC )
   
   strTitle = "An error occured"
   
   strMsg = _
   "Error: " & Err & " - " & Error$ & Chr(10) & Chr(10)_
   & "Procedure: " & vProcedure & Chr(10)  & Chr(10)    _
   & "Line: " & Erl & Chr(10)
   
   Msgbox strMsg , 48, strTitle
   
End Sub
Titel: Re:Mail per LS verschicken
Beitrag von: Bruce Willis am 11.08.04 - 23:08:34
nochmals danke

was das Fenster mit einer Auswahlmöglichkeit betriff,  ich meine so eins, das beim normalen Verschicken aus dem Notes Client auch kommt (siehe Anlage hier)...
Titel: Re:Mail per LS verschicken
Beitrag von: TMC am 11.08.04 - 23:12:09
was das Fenster mit einer Auswahlmöglichkeit betriff,  ich meine so eins, das beim normalen Verschicken aus dem Notes Client auch kommt (siehe Anlage hier)...

Hier im Beispiel brechen wir die ganze Aktion dann ab, wenn ein Fehler auftaucht.
Du nutzt auch Backend-Methoden um die Mail zu versenden (und nicht Frontend). Ich weiss jetzt aber nicht genau, welcher Fehler da zurückgegeben wird.
Titel: Re:Mail per LS verschicken
Beitrag von: TMC am 11.08.04 - 23:17:20
Evtl. solltest Du die Mail via Frontend senden. Dann solltest Du auch die Fehlermeldung bekommen.

Was schlecht ist:
Dim TicketNr, UserTech, Subject, UserReg, Priority As String

Dadurch werden TicketNr, UserTech, Subject, UserReg als Variant deklariert und nicht als String.

Was geht ist:
Dim TicketNr as string, UserTech as string, Subject as string, UserReg as string, Priority As String
Titel: Re:Mail per LS verschicken
Beitrag von: Bruce Willis am 11.08.04 - 23:23:31
Okay... Ich habe Debugger gestartet und den Fehler reproduziert.

Die andere Meldung (siehe hier angehängt) ist gekommen, aber der Debugger nicht... Was kann ich sonst machen?
Titel: Re:Mail per LS verschicken
Beitrag von: TMC am 11.08.04 - 23:25:45
1.) Hast Du meinen Errorhandling-Code eingebaut? Dann solltest Du die Fehlernummer bekommen (über Case Else)

2.) Versende doch das Doc im Frontend anstatt Backend, dann sollte der Auswahl-Dialog kommen.
Titel: Re:Mail per LS verschicken
Beitrag von: Bruce Willis am 11.08.04 - 23:27:57
oh... sorry, das hab' ich noch nicht gemacht...

ich probiere dann morgen aus

vielen Dank!

Gruß
Bruce
Titel: Re:Mail per LS verschicken
Beitrag von: TMC am 11.08.04 - 23:31:39
Du kannst auch den Client auf Englisch umstellen (in der notes.ini die Zeile "UserInterface=de" auskommentieren) und dann nach der englischen Fehlermeldung den Fehlercode suchen.

Ich würde als erstes aber mal versuchen, die Mail im Frontend zu verschicken.
Titel: Re:Mail per LS verschicken
Beitrag von: Bruce Willis am 11.08.04 - 23:35:08
Danke für die Tipps!
Bis morgen, dann...  :)