Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: jor am 22.03.06 - 12:51:38

Titel: Java-Agent -> Mailversandt -> falsche Adresse
Beitrag von: jor am 22.03.06 - 12:51:38
Hallo zusammen,

vor einigen Wochen habe ich einen Java-Agent erstellt, der in der User-Mail-DB steckt und bei einkommenden EMails diese anpackt und an eine Internetadresse (vorname.nachmane@firma.de) schickt. Hat auch alles prima gefunzt, aber nun kommen die Dinger nur bis zu unserem Outlook-Server (bitte, bitte keine Fragen warum Notes und Outlook in einer Firma  :-[ ) am anderen Standort an und der meckert, weil in der Empfängeradresse die Lotus Notes-Adresse steht
(Vorname Nachname/OU/O@Domain), die er nicht zuordnen kann.
Wie kann ich es erreichen, das im Absender (vom Agenten) die Internetadresse eingetragen wird?

(Übrigens, wir machen das so, weil wir keine direkte Weiterleitung im Personendokument haben wollen, da dass sonst nicht mit dem Kalender & Freizeit  funzt. )

Gruß
Volker
Titel: Re: Java-Agent -> Mailversandt -> falsche Adresse
Beitrag von: Ralf_M_Petter am 22.03.06 - 15:49:14
Ja leider lieber Volker ist meine Kristallkugel defekt, aber wenn du mal den Code posten würdest, dann würden wir das Problem sicher schnell lokalisieren. Das was du da beschreibst halte ich für ziemlich unmöglich, ausser du manipulierst die Mailbox auf dem Server. Machst du das?

Grüße

Ralf
Titel: Re: Java-Agent -> Mailversandt -> falsche Adresse
Beitrag von: jor am 22.03.06 - 17:10:02
Hallo Ralf,  ;D

isch weisssss,  ::)  ::), ok du hast es so gewollt, anbei mein Script  ;)

import lotus.domino.*;
import java.util.Vector;

public class JavaAgent extends AgentBase {

   public void NotesMain() {

      try {
            Session session = getSession();
            AgentContext agentContext = session.getAgentContext();
            String Empfänger = "vorname.nachname@firma.com";
            
            Database db = agentContext.getCurrentDatabase();
            DocumentCollection dc = agentContext.getUnprocessedDocuments();
            
               Document doc = dc.getFirstDocument();
            if( doc == null)
            {
               //System.out.println("Keine neue EMail vorhanden!\n");
            }              

               while (doc != null)
            {
               String Abs = "";
               String absender = "";                     
               String zeichen="";
               int pos = 0;
               int schritt=0;               
               
               //System.out.println(" ");
               //System.out.println("--- Neue EMail ---");
                   //System.out.println("    Org. Betreff: "+doc.getItemValueString("Subject"));
               //System.out.println("    Org. Absender: "+doc.getItemValueString("From"));
               // Wenn eine Interne Mail kommt...
               if(doc.hasItem("InetFrom")==true)
               {
                  Abs = doc.getItemValueString("InetFrom");
                  //System.out.println("    InetFrom: "+Abs);            
                  do
                  {
                     zeichen = Abs.substring(schritt, schritt+1);
                     schritt++;
                     //System.out.println("Zeichen: "+zeichen);
                  }               
                  while ( zeichen.equals("@") != true );                              
                  absender = Abs.substring(0,schritt-1);               
                  //System.out.println("    Neu Absender: "+absender);
               }
               else
               {   
                  // Wenn eine externe Mail kommt...

                  Abs = doc.getItemValueString("From");
                  //System.out.println("    From: "+Abs);
                  boolean pfeil = false;
                  String trenner;
                  int laenge = Abs.length();
                  for (int k=0; k<laenge;k++)
                  {
                     String t = Abs.substring(k,k+1);   
                     if( t.equals("<")==true)
                     {
                        pfeil=true;
                     }
                  }
                  
                  if(pfeil == false)
                  {
                     trenner="@";
                  }
                  else
                  {
                     trenner="<";
                  }

                  do
                  {
                     zeichen = Abs.substring(schritt, schritt+1);
                     schritt++;
                     //System.out.println("Zeichen: "+zeichen);
                  }               
                  while ( zeichen.equals(trenner) != true );                              
                  int abzug;
                  if(pfeil==true)
                  {
                     abzug=2;
                  }
                  else
                  {
                     abzug=1;
                  }                     
                  absender = Abs.substring(0,schritt-abzug);               
                  //System.out.println("    Neu Absender: "+absender);                  
               }
                              
                    Document memo = db.createDocument();
                    memo.appendItemValue("Form","Memo");
                    memo.appendItemValue("Subject", "Abs.: "+absender+" # "+doc.getItemValueString("Subject"));
                    memo.replaceItemValue("SendTo",Empfänger);               
               RichTextItem rti = memo.createRichTextItem("Body");
               doc.renderToRTItem(rti);
               Vector v = new Vector();
               v.addElement(Empfänger);
               memo.setEncryptOnSend(false);
               memo.setSaveMessageOnSend(false);
                    memo.setSignOnSend(false);            
                    memo.send(v);
                    agentContext.updateProcessedDoc(doc);
                    doc = dc.getNextDocument();
                    //System.out.println("Ende mit neuer Mail\n");   
            }            

         } catch(Exception e)
         {
            e.printStackTrace();
         }
   }
}
Ist in einer heissen Phase, in der ich eigentlich immer stecke  ;), geproggt worden, vielleicht gibt es ja auch grundlegende Verbesserungen für die Funktion (Bin Java-Newbie, also immer sachte mit der Kritik  ;) )
Gruß Volker
Titel: Re: Java-Agent -> Mailversandt -> falsche Adresse
Beitrag von: Ralf_M_Petter am 23.03.06 - 08:18:50
Hallo Volker!

Kein Problem, aber was mir jetzt noch fehlt, wo läuft der Agent und wie ist er getriggert. Ich denke mal, er läuft am Server und wird durch neue Mails getriggert. In dem Fall müsste er die mailadresse des Signers des Agents haben, oder den Server.

Ich würde einfach in dem Mail das Pricipal Feld mit der gewünschten Absenderadresse befüllen, dann sollte es passen. Für Details such mal in folgendem Link nach Principal http://www-128.ibm.com/developerworks/lotus/library/ls-Troubleshooting_agents_ND5_6/

Grüße

Ralf


Titel: Re: Java-Agent -> Mailversandt -> falsche Adresse
Beitrag von: jor am 23.03.06 - 11:12:03
Hallo Ralf,

der Agent läuft in der Mail-DB des Users und wird beim Eingang neuer Mails ausgeführt.
Ausgeführt wird er im Namen des Mail-DB-Besitzers.

Das "Principal-Feld" ist mir noch garncht aufgefallen, werde mal lesen.
Mmhh jetzt schonmal vor dem Lesen: Kann ich das einfach so beschreiben wie die anderen Felder?
Wird da auch die Adresse aus dem Personendokument eingetragen (bei normaler Mail)?

Grüße
Volker
Titel: Re: Java-Agent -> Mailversandt -> falsche Adresse
Beitrag von: Ralf_M_Petter am 23.03.06 - 11:21:49
Ja kannst du einfach so beschreiben. Ist ein ganz normales Feld. Man kann dort laut der Agent FAQ auch eine Internetadresse reinschreiben.

Grüße

Ralf
Titel: Re: Java-Agent -> Mailversandt -> falsche Adresse
Beitrag von: jor am 23.03.06 - 11:37:37
 ^-^
das ist prima, werde es sofort heute Nachmittag ausprobieren und noch schreiben ob es auch der Outlook-Server begreift (  ;) ).

Ich danke dir!

Grüße
Volker