David API gibt nicht alle Informationen (Entries) zurück

  • Moinsen zusammen,
    die David-API gibt bei einigen Entries nichts
    zurück, obwohl sie bei einigen Entries alles perfekt so darstellt, wie
    es im David-Client angezeigt wird. Das heißt, bei einigen Elementen habe
    ich also einen komplett leeren <div> und bei einigen "hunderte"
    verschachtelte Tabellen, in der alles perfekt dargestellt wird.


    Ich schreibe einen PHP-Client und dieser Source-Code funktioniert nicht, wie er soll:
    [PHP]
    $id = $_GET['id'];
    $oArchive = $oAcc->GetArchive[$aArchives[$_SESSION['id_navigation1']]['path']];
    $oEntry = $oArchive->GetArchiveEntries("default");
    echo $oEntry->Item(intval($id))->HTML;
    [/PHP]


    $id wird über einen Mausklick erzeugt mithilfe von jQuery.


    Ich freue mich schon auf Antworten :D
    Mfg, Lamarn

  • Hallo,


    kann es sein, dass die leeren Mails reine Textmails sind? Du greifst hier ja nur den HTML Teil ab, der ist bei Plaintext Mails leer.


    Gruß Jens

    Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

    ----------

    Bitte teilen/weitersagen: STARFACE Module Databasewww.sfm-db.com


    STARFACE Excellence PartnerSTARFACE Module CreatorTobit.Software Authorized Partner (Mailserver/Unified Messaging)work4all! Solution Partner (CRM/ERP)Securepoint Professional Partner (Firewall/UTM)


    1 Qubit - J.Suingwww.1qubit.deSoftware - Service - Coding

  • Moin,
    du meinst also, dass ich:

    PHP
    echo $oEntry->Item(intval($id))->HTML;


    ändern muss, damit etwas angezeigt wird?
    Den Versuch würde ich gerne wagen, nur welche Field-ID gibt alles aus; also Mails mit HMTL-Teilen und Plaintext-Mails?


    Gruß, Lev


    Edit: Mir schien es, dass "HTML" dafür steht, dass der Inhalt in Form von HTML ausgegeben wird. Aber wenn es eine andere Möglichkeit gibt, dann immer her damit :D

  • Hallo Lev,


    HTML steht dafür, dass dort der HTML Teil geholt wird. ;)


    Zitat

    Field_Content


    The Field_Content value is from Type VARIANT
    (VT_BSTR). The returned value is the PlainText part from the message. Is the
    current selected entry a HTML message you will get the plain text part without
    the HTML Tags. To get the HTML Text use the [url='']Field_HTML[/url]


    Ich glaube das Content Feld ist immer gefüllt, bin aber nicht sicher. Sonst musst Du beide prüfen.



    Gruß Jens

    Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

    ----------

    Bitte teilen/weitersagen: STARFACE Module Databasewww.sfm-db.com


    STARFACE Excellence PartnerSTARFACE Module CreatorTobit.Software Authorized Partner (Mailserver/Unified Messaging)work4all! Solution Partner (CRM/ERP)Securepoint Professional Partner (Firewall/UTM)


    1 Qubit - J.Suingwww.1qubit.deSoftware - Service - Coding

  • Moinsen,
    ich verlaute mal einen kleinen Statusbericht:
    - Zeilenumbrüche werden nicht angezeigt. Sie werden anscheinend auch nicht von der API geladen. Vllt. muss ich \n zu <br> umwandeln.
    - Bilder erscheinen gar nicht, aber hier muss ich wohl nach Attachments suchen?
    - Der mit Adressen verknüpfte Inhalt wird anscheinend nicht angezeigt.
    - Umlaute werden als Fragezeichen angezeigt.


    Habe ich vllt. einen Fehler in dem Code, den ich gepostet habe? Eigentlich dürfte der richtig sein, da die richtigen Archive geladen werden.


    Viele Grüße Lev


    Edit: Anscheindend extrahiert die API auch keinen Inhalt aus HTML-Tags. Somit werden Mails in diesem Format komplett ignoriert.

  • Hallo Lev


    bei Deinen Fragen stellt sich mir die Frage auf welche Eigenschaft Du diese beziehst (Content, HTML, etc.).

    - Zeilenumbrüche werden nicht angezeigt. Sie werden anscheinend auch nicht von der API geladen. Vllt. muss ich \n zu
    umwandeln.

    Im Content werden ziemlich sicher \n stehen, da es Plaintext ist. Wenn Du eine Ausgabe in Deinem Programm (PHP) mit HTML machst, wird \n nur im Quellcode ausgeführt. Das ist vollkommen normal und hat nichts mit der David API zu tun. nl2br($content) sollte hier Abhilfe schaffen.

    - Bilder erscheinen gar nicht, aber hier muss ich wohl nach Attachments suchen?

    Korrekt. Im Plaintext gibt es keine Bilder. Im HTML Teil gibt es nur "URLs" / Verknüpfungen auf Bilder in Form von img-Tags o.ä.

    - Der mit Adressen verknüpfte Inhalt wird anscheinend nicht angezeigt.

    Keine Ahnung was Du damit meinst.

    - Umlaute werden als Fragezeichen angezeigt.

    Dann nutzt Du eine falsche Zeichenkodierung. Auch kein Problem der David API. Versuchs mal mit utf8 Konvertierung o.ä.

    Anscheindend extrahiert die API auch keinen Inhalt aus HTML-Tags. Somit werden Mails in diesem Format komplett ignoriert.

    Du hattest doch bereits die HMTL Mails mit ->HTML...



    Gruß Jens

    Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

    ----------

    Bitte teilen/weitersagen: STARFACE Module Databasewww.sfm-db.com


    STARFACE Excellence PartnerSTARFACE Module CreatorTobit.Software Authorized Partner (Mailserver/Unified Messaging)work4all! Solution Partner (CRM/ERP)Securepoint Professional Partner (Firewall/UTM)


    1 Qubit - J.Suingwww.1qubit.deSoftware - Service - Coding

  • Moin Jens,
    1. Habe ich mir auch so gadacht aber nicht mit str_replace hinbekommen. Aber vielen Dank für den Hinweis auf nl2br. Die Funktion kannte ich noch nicht und sie funktioniert perfekt.
    2. Mit den Attachment bin ich noch nicht weitergekommen. Melde mich aber wieder, wenn ich das hinbekommen habe.
    3. Vllt. zum Verständnis: Das ist nicht mein David-Server, den ich benutze und ich arbeite mit David erst seitdem ich den Auftrag bekommen habe, den Client zu programmieren. Deswegen bitte ich ein bisschen um Verständnis, dass ich nicht alle Archivtypen kenne etc. Ich habe hier in dem Ordner "Adressen" im Root des David-Servers Adressen. Wenn ich im David auf eine Adresse klicke, bekomme ich einige Daten zu der Person etc. Es ist aber auch Text hinzugefügt worden. Kann es eine Art Beschreibung sein? Ich wüsste jetzt nicht, wo ich den Text einordnen sollte, also ob bei HMTL oder Content etc. Bei Content wird auf jeden Fall nichts angezeigt. Der Inhalt sieht auf jeden Fall aus, wie Plaintext. Ich hoffe Du verstehst jetzt, was für Elemente ich meine.
    4. Hier hat UTF8_Encode geholfen. Ich lade die Dateien nach, wodurch wahrscheinlich die Angabe für die Kodierung nicht beachtet wird. Ist aber auch egal, wenn es mit der PHP-Funktion arbeitet. Vielen Dank!
    5. Ich hatte gehofft, dass aus den HTML-Mails der Content extrahiert wird, da der Field_Type HTML nicht immer greift. Es sieht vor Allem total schrecklich aus, wenn diese unterschiedlichen "Mail-Typen" ganz anders dargestellt werden. Meinst Du, ich solle überprüfen, ob bei Content etwas zurückgegeben wird. Und wenn nichts zurückgegeben wird, ich HTML benutzen soll?


    Viele Grüße Lev

  • Hallo erneut,
    Ich habe jetzt mittlerweile diesen Code:

    PHP
    $id			= $_GET['id'];
    $oArchive 	= $oAcc->GetArchive[$aArchives[$_SESSION['id_navigation1']]['path']];
    $oEntry		= $oArchive->GetArchiveEntries("default");
    if(strlen($oEntry->Item(intval($id))->Content) == 0){
    	echo utf8_encode(nl2br($oEntry->Item(intval($id))->Content));
    }
    else{
    	echo utf8_encode($oEntry->Item(intval($id))->HTML);
    }
  • Hallo Lev

    1. Habe ich mir auch so gadacht aber nicht mit str_replace hinbekommen. Aber vielen Dank für den Hinweis auf nl2br. Die Funktion kannte ich noch nicht und sie funktioniert perfekt.

    es kann sein das dort nicht nur \n sondern \r oder \n\r o.ä. verwendet wird. nl2br ist bei Steuerzeichen in diesem Falle immer vorzuziehen. Da muss man sich keinen weiteren Kopf drum machen, welche Steuerzeichen da wirklich stehen.

    3. Vllt. zum Verständnis: Das ist nicht mein David-Server, den ich benutze und ich arbeite mit David erst seitdem ich den Auftrag bekommen habe, den Client zu programmieren. Deswegen bitte ich ein bisschen um Verständnis, dass ich nicht alle Archivtypen kenne etc. Ich habe hier in dem Ordner "Adressen" im Root des David-Servers Adressen. Wenn ich im David auf eine Adresse klicke, bekomme ich einige Daten zu der Person etc. Es ist aber auch Text hinzugefügt worden. Kann es eine Art Beschreibung sein? Ich wüsste jetzt nicht, wo ich den Text einordnen sollte, also ob bei HMTL oder Content etc. Bei Content wird auf jeden Fall nichts angezeigt. Der Inhalt sieht auf jeden Fall aus, wie Plaintext. Ich hoffe Du verstehst jetzt, was für Elemente ich meine.

    Du solltest ggf. mal überlegen bei anderen ItemTypes die entsprechenden Objekte zu nutzen, z.B. AdressItem. Da kannst Du dann mit "FormattedNotes" diese Info holen. Bei MessageItem2 Field würde ich mal auf "Notes" tippen, habs aber nicht getestet.

    4. Hier hat UTF8_Encode geholfen. Ich lade die Dateien nach, wodurch wahrscheinlich die Angabe für die Kodierung nicht beachtet wird. Ist aber auch egal, wenn es mit der PHP-Funktion arbeitet. Vielen Dank!

    Mit Ajax? Dann hast Du i.d.R. immer dieses Kodierungsproblem.

    5. Ich hatte gehofft, dass aus den HTML-Mails der Content extrahiert wird, da der Field_Type HTML nicht immer greift. Es sieht vor Allem total schrecklich aus, wenn diese unterschiedlichen "Mail-Typen" ganz anders dargestellt werden. Meinst Du, ich solle überprüfen, ob bei Content etwas zurückgegeben wird. Und wenn nichts zurückgegeben wird, ich HTML benutzen soll?

    Ja, ich würde auf beides prüfen.
    Ich habe eben mal einen kleinen Tester gebaut. in meinem Eingang sind bei HTML Mails immer beide Felder gefüllt, bis auf eine Ausnahme. Kann es aber auch nicht festmachen woran es liegt.


    Gruß Jens

    Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

    ----------

    Bitte teilen/weitersagen: STARFACE Module Databasewww.sfm-db.com


    STARFACE Excellence PartnerSTARFACE Module CreatorTobit.Software Authorized Partner (Mailserver/Unified Messaging)work4all! Solution Partner (CRM/ERP)Securepoint Professional Partner (Firewall/UTM)


    1 Qubit - J.Suingwww.1qubit.deSoftware - Service - Coding

  • Moinsen,
    bist du so nett und zeigst mir deinen Code, mit dem du das realisiert hast bzw. änderst meinen Code so ab?


    Eine Frage ist mir noch gekommen, als du die weiteren ItemTypes erwähnt hast: Kann man irgendwie über die API überprüfen, welcher Typ gerade verwendet wird? Somit könnte man ja auch einfach Typ-spezifischen Code schreiben.


    Liebe Grüße, Lev (nohomo :D)

  • Hallo Lev,


    ich habe bei meinem Test nichts anderes gemacht als Du auch. Einmal das Feld HTML und einmal das Feld Content in eine Textbox geschrieben.


    Wg. der ItemTypes, versuche mal die API Doku zu lesen, wenn man das Prinzip da mal verstanden hat, findet man eigentlich alles.
    Ich musste gerade selbst suchen, und bin wie folgt vorgegangen:


    Abschnitt "Types" öffnen -> DvItemTypes -> Multiple Objects -> IMessageItem2 (weil Du damit aktuell arbeitest) -> get_Type.


    Wichtig ist auch das Object Diagram, hier kannst Du sehr gut die Abhängigkeiten der einzelnen Typen lesen. So siehst Du dort z.B., dass diese spezifischen Typen alle vom MessageItem abgeleitet werden und das MessageItem2 nicht kompatibel ist. Um also vom MessageItem2 zum MessageItem oder einem abgeleiteten Typ zu kommen, musst Du Dir die ID holen und damit ein neues Object erzeugen.


    Gruß Jens

    Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

    ----------

    Bitte teilen/weitersagen: STARFACE Module Databasewww.sfm-db.com


    STARFACE Excellence PartnerSTARFACE Module CreatorTobit.Software Authorized Partner (Mailserver/Unified Messaging)work4all! Solution Partner (CRM/ERP)Securepoint Professional Partner (Firewall/UTM)


    1 Qubit - J.Suingwww.1qubit.deSoftware - Service - Coding

  • Moinsen Jens,
    ja es geht mit dem get_Type "Befehl". Er heißt nur "Type" bzw. schätze ich, dass es eine Eigenschaft des Entries ist, die ausgegeben werden kann. Das macht die Sache natürlich sehr viel einfacher :D. Es gibt ja zum Glück nur 12 verschiedene Item-"Sorten". Ich frage dann jetzt einfach den Typ ab bevor ich etwas ausgebe. Nun muss ich halt nur herausbekommen, welche Befehle am besten mit einem bestimmten Typ interagieren.


    ps. Es sollte also auch so klappen :D Yeyh! Ich melde mich, wenn etwas wieder nicht klappt, haha.
    Viele Grüße, Lev


    edit: Bisher vielen, vielen Dank! Du hast mir sehr weitergeholfen!

  • Hallo Lev,



    schöner wäre





    Zitat

    ja es geht mit dem get_Type "Befehl". Er heißt nur "Type" bzw. schätze ich, dass es eine Eigenschaft des Entries ist, die ausgegeben werden kann.

    Die Doku bezieht sich auf C und dort ist es get_Type soweit ich weiß.






    Zitat

    Nun muss ich halt nur herausbekommen, welche Befehle am besten mit einem bestimmten Typ interagieren.

    Was genau meinst Du hiermit? Die Typen ergeben sich doch ziemlich eindeutig aus dem Namen und für fast jeden gibt es ein entsprechendes Objekt.




    Gruß Jens

    Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

    ----------

    Bitte teilen/weitersagen: STARFACE Module Databasewww.sfm-db.com


    STARFACE Excellence PartnerSTARFACE Module CreatorTobit.Software Authorized Partner (Mailserver/Unified Messaging)work4all! Solution Partner (CRM/ERP)Securepoint Professional Partner (Firewall/UTM)


    1 Qubit - J.Suingwww.1qubit.deSoftware - Service - Coding

  • Moin Jens,


    Oh, dass es switch bei PHP gibt, wusste ich nicht bzw. ich habe es nicht überprüft :D Aber ja, die Methode finde ich auch übersichtlicher... Danke, für den Tipp.


    Ich meinte mit dem "herausfinden" die entsprechenden Befehle aus der API (edit: Dokumentation der API) auslesen, da ja nicht alles benutzt werden muss.


    Mfg, Lev


    EDIT: Also bei AdressItem stimmt "Notes", also war deine Vermutung richtig.

  • Moin Jens,
    also es läuft alles rund jetzt. VoiceItem etc. werde ich später noch hinzufügen, aber Dokumente, SMS, etc. laufen alle. Nun möchte ich mich dem anderen Problem widmen (Ordnerstruktur auslesen und ausgeben).


    ps. Ich starte dort einen neuen Beitrag, in dem ich das Problem etwas genauer beschreibe.
    Viele Grüße, Lev
    ________________________________________________


    Für alle, die nachvollziehen wollen, was das Problem war bzw. wie es gelöst werden kann:


    Das Problem war im Prinzip, dass ich versucht habe "Content" aus allen Archiv-Typen auszulesen, was jedoch nicht so einfach geht. Einige Archiv-Typen zB. brauchen eine andere Funktion, um den richtigen Inhalt anzuzeigen. Das AddressItem kennt kein "Content", sondern zeigt seinen Inhalt mit "Notes" an.


    Das Problem haben wir jetzt gelöst, indem wir den Archiv-Typ erfragen und dann entsprechend reagieren.
    Um die E-Mails richtig anzuzeigen, habe ich jetzt zuerst nach "Content" gefragt und anschließend, im Falle eines leeren Strings, nach "HTML".

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!