Domino 9 und frühere Versionen > ND6: Entwicklung

Darstelluingsprobleme bei übernommenen Mails

<< < (2/4) > >>

Semeaphoros:
Oder Midas einsetzen, dort sind Mime-Funktionen vorhanden (wobei ich nicht auswendig weiss, ob gerade diese Anforderung direkt implementiert ist, aber das lässt sich bei Ben Langhinrichs einfach nachfragen).

http://www.geniisoft.com

Axel:
Hi,

vielen Dank erstmal für die rege Diskussion



--- Zitat von: Semeaphoros am 26.07.05 - 23:18:34 ---Das sind ja wie es scheint Internet-Mails im Mime-Format. Tatsächlich ist es so, dass eingebettete Bilder in dieser Situation als Anhänge zählen, heisst, das Verhalten ist damit, wenn man bei der Uebernahme Attachements nicht übernehmen will, eigentlich korrekt. Ob es einen Workaround dazu gibt, hab ich keine Ahnung.

--- Ende Zitat ---

Es ist ein Mail im Mime-Format. Das Problem dabei ist, dass es

a) keine Anhänge im klassischen Sinne gibt und

b) der Code zum Löschen von Anhängen gar nicht ausgeführt wird.

Bei der Übernahme nehme ich erstmal alles mit was in dem Mail vorhanden ist, auch die Anhänge, soweit vorhanden. Wenn der User die Abfrage zur Übernahme der Anhänge mit "Nein" beantwortet hat, prüfe ich, ob im Body-Feld Attachments vorhanden sind. Wenn ja werden sie gelöscht.

Hier nochmal den passenden Code dazu:

If intAttachment = 0 Then  'Wenn Dateianhänge nicht übernommen werden sollen, werden sie hier gelöscht
  If docNew.HasEmbedded Then  'ist True
    Set rtitem = docNew.GetFirstItem("Body")   ' hier verreisst es das Format und es sind keine Bilder mehr vorhanden
    If rtitem.Type = RICHTEXT Then
       If Not (Isempty(rtitem.EmbeddedObjects)) Then
         Forall objects In rtitem.EmbeddedObjects
           If objects.Type = EMBED_ATTACHMENT Then
               Call objects.Remove
           End If  'If objects.Type = EMBED_ATTACHMENT
         End Forall  'Forall objects In rtitem.EmbeddedObjects
       End If  'If Not (rtitem.EmbeddedObjects Is Nothing) Then
     End If  'If rtitem.Type = RICHTEXT
  End If   'If refdoc.HasEmbedded
End If  'If intAttachment = 0 Then
...

Das Format wird bereits "verunstaltet" bevor er überhaupt dazu kommen können irgendwelche Anhänge zu löschen. In dem entsprechenden Mail ist rtitem.EmbeddedObjects leer.

Nach Ausführung dieser Zeile Set rtitem = docNew.GetFirstItem("Body") ist das Format kaputt, obwohl alle Infos aus dem Mail noch vorhanden sind.



--- Zitat von: TMC am 26.07.05 - 23:02:27 ---Hi Axel,
nur ein Schuß ins blaue:
Wie ist rtitem deklariert, als NotesRichtextitem?
Ich hatte mal in R5 Probleme mit dieser Deklaration, nur zum Testen würde ich es mal als Variant deklarieren.
Wobei das natürlich nur ein Workaround wäre, ohne zu wissen woran das Verhalten liegt...

Matthias

--- Ende Zitat ---

Habe ich bereits probiert, ebenfalls mit dem gleichen Ergebnis.


Anscheinend betrifft es im Moment nur dieses eine Mail. Andere Mails die ebenfalls Bilder im Body-Feld enthalten werden sauber dargestellt. Da finde ich aber dann auch HTML im Body-Feld.

Sehr mysteriös das Ganze. Ich tippe auf einen Bug?



Axel

Manfred Dillmann:
Hallo Axel,

ich habe jetzt nicht den gesamten Thread verfolgt, aber bei "MIME" Mails hätte ich folgendes anzumerken:

Sowohl "embedded pictures" als auch "attachtments" werden in MIME-codierten Mails komplett anders verwaltet und dürfen nach meinen Untersuchungen nicht mehr über die "normalen" RichtextItem Klassen angesprochen werden. Warum?

Wenn du Dir eine solche Mail anschaust, werden embeded pictures z.B. so:
--=_related 002B6D36C125704B_=
Content-Type: image/jpeg
Content-ID: <_2_0404D4140404D1EC002B6D36C125704B>
Content-Transfer-Encoding: base64
...

und attachments so:
--=_related 002B6D36C125704B_=--
--=_mixed 002B6D36C125704B_=
Content-Type: image/gif; name="notes6icon.gif"
Content-Disposition: attachment; filename="notes6icon.gif"
Content-Transfer-Encoding: base64
...

gespeichert. Einen sauberen Zugriff bekommt man nur noch mit der NotesMIMEEntity class bzw. der NotesMIMEHeader class. Ganz wichtig ist es, während der Bearbeitung der MIME-Entities die von Notes in LS sonst automatisch durchgeführte Konvertierung nach Richtext "abzuschalten" ->

ConvertMIME property
Read-write. Indicates whether items of type MIME_PART are converted to rich text upon NotesItem instantiation.

To get: flag = notesSession.ConvertMIME
To set: notesSession.ConvertMIME = flag

Das ganze erscheint mir nicht trivial zu sein. Ich arbeite gerade an meinem neuen Tool madicon easyMail (Erstellung und Versand von personalisierten - also mit frei definierbaren Platzhaltern ausgestattete - Serienmails im MIME-Format mit nahezu vollständiger Unterstützung der im Notes Client verfügbaren Text-Formatierungsmöglichkeiten und Attachments) und träume mittlerweile schon von diesem MIME-Zeugs.  ;)

Die MIME-Unterstützung via der o.g. LS-Klassen scheint zudem nicht ganz fehlerfrei zu sein.

Viel Glück!

Gruß
Manfred

Axel:

--- Zitat von: Manfred Dillmann am 27.07.05 - 10:17:17 ---Wenn du Dir eine solche Mail anschaust, werden embeded pictures z.B. so:
--=_related 002B6D36C125704B_=
Content-Type: image/jpeg
Content-ID: <_2_0404D4140404D1EC002B6D36C125704B>
Content-Transfer-Encoding: base64
...

und attachments so:
--=_related 002B6D36C125704B_=--
--=_mixed 002B6D36C125704B_=
Content-Type: image/gif; name="notes6icon.gif"
Content-Disposition: attachment; filename="notes6icon.gif"
Content-Transfer-Encoding: base64
...

--- Ende Zitat ---

Hi,

diese Daten habe ich in der Mail nicht gefunden. Es gibt einen "versteckten" Anhang in $File. Dort vermute ich den gesamten Text und die Grafiken. Warum der bei dem Zugriff mit Set rtitem = docNew.GetFirstItem("Body")  über den Jordan geht ist mir schleierhaft.

Da es sich aber scheinbar um seltene Einzelfälle handelt, werde ich keine größeren Klimmzüge machen. Der User soll in dem Fall dann halt mit Anhängen übernehmen.


Axel
 

Manfred Dillmann:
Hallo Axel,

>>diese Daten habe ich in der Mail nicht gefunden.<<

Hatte ich nicht dazu geschrieben:
Wenn Du im 6er Notes-Client eine MIME-Mail geöffnet hast, kannst Du dir den "echten" MIME-Gehalt über das Menü 'View' -> 'Show' -> 'Page Source' anschauen.

Diese Infos findest Du i.d.T. nicht unbedingt, wenn Du dir die einzelnen Felder über den Dokument-Eigenschaften-Dialog anzeigen lässt.

>>Da es sich aber scheinbar um seltene Einzelfälle handelt, werde ich keine größeren Klimmzüge machen.<<

Eine weise Entscheidung. ;)
Da wären tatsächlich größere Klimmzüge erforderlich...

Manfred

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln