Hi,
ein Problem tritt allerdings bei der Übernahme der Mails in eine eigene DB (siehe http://www.atnotes.de/index.php?topic=24480.0) noch auf.
Ich habe ein Mail, in dem, im Body Bilder eingefügt wurden. Im Body-Feld finde ich aber keinen HTML-Text, sondern nur einen Hinweis auf das Mime-Format. Das Mail hat auch ein $File-Feld.
In der Übernahme-Routine habe ich eine Abfrage, ob Dateianhänge mit übernommen werden sollen oder nicht. Bei "Nein" werden alle Attachments im Body Feld gelöscht.
...
If intAttachment = 0 Then 'Wenn Dateianhänge nicht übernommen werden sollen, werden sie hier gelöscht
If docNew.HasEmbedded Then
Set rtitem = docNew.GetFirstItem("Body")
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 Problem bei diesem speziellen Mail in nun folgendes: wird die Frage nach der Übernahme der Anhänge mit "Nein" beantwortet, werden die Bilder nun noch als [Image] und der Text nicht sauber formatiert angezeigt. Bei "Ja" wird das Mail sauber übernommen.
Ich habe mal ein paar Test gemacht und dabei festgestellt, dass er bei dieser Anweisung
Set rtitem = docNew.GetFirstItem("Body")
die Formatierung zerrreißt.
Warum? Ich habe im moment keine Erklärung dafür?
Axel
Hallo Axel,
keine Angst, ist mein letzer Beitrag zu diesem Thema:
>>Das Ganze sieht wie HTML-Code aus.<<
Das ist auch je nach Inhalt der MIME-Mail richtig so. Wenn in der Mail formatierter Text enthalten ist, wird der normalerweise so codiert:
--=_related 002B6D36C125704B_=
Content-Type: text/html; charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable
...
Hast Du aber einen Anhang, wird der nicht in einem klassischen Richtext-Item gespeichert. Wie zuvor geschrieben:
--=_related 002B6D36C125704B_=--
--=_mixed 002B6D36C125704B_=
Content-Type: image/gif; name="notes6icon.gif"
Content-Disposition: attachment; filename="notes6icon.gif"
Content-Transfer-Encoding: base64
Also nix mehr mit "Embedded/Attached object" im Sinne eines Notes-Richtext-Items. Base64 sieht dann z.B. so aus:
/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwM
DAwMEAwODxAPDgwTExQUExMcGxsbHCAgICAgICAgICD/2wBDAQcHBw0MDRgQEBgaFREVGiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICD/wAARCACBALADAREA
AhEBAxEB/8QAHAAAAgIDAQEAAAAAAAAAAAAAAAUGBwIDBAEI/8QARhAAAQMDAQMHCAUKBQUAAAAA
AQACAwQFEQYSITEHEyJBUWFxFDIzUoGRobEjkrPBwhUXJTRCQ1RicqKCg7LR0hZEU3Pi/8QAGwEB
AAIDAQEAAAAAAAAAAAAAAAQFAgMGAQf/xAA3EQACAQMDAQUGBAYCAwAAAAAAAQIDBBEFEjEhEyIy
...
Das decodiert dann der Notes-Client in Echtzeit beim Öffnen der Mail bzw. wenn man den Anhang speichert.
>>Der steht aber, wie gesagt, nicht direkt im Body-Feld sondern in einer Datei im Feld $File. Diese Datei ist aber nicht als "normaler Dateianhang" sichtbar.<<
Das glaubst Du aber auch nur... der Anhang ist nicht in diesem Feld gespeichert. Schau dir mal die Eigenschaften des Feldes "$File" an. Das ist kein Richtextfeld-Feld und hat die Flags: "ATTACH SIGN SEAL SUMMARY". Kein Richtext-Feld, sonst gäbe es kein "SUMMARY"
Da ist garantiert nicht der Anhang drin (schau mal auf die Größe des Feldes), sondern nur ein paar Infos zum Anhang. Der Anhang ist base64 encoded als MIME-Entity gespeichert. Du kannst in diesem Zusammenhang die Infos aus dem Dokument-Eigenschaften-Dialog vergessen.
>>Ich denke wir sollten hier die Diskussion abbrechen.<<
Mache ich auch mit diesem Post. Glaube mir, es gibt keinen einfachen Weg. Entweder Du gehts mit der NotesMIMEEntity class da ran, oder Du "zerschiesst" Dir die Mail:
Nach Ausführung dieser Zeile Set rtitem = docNew.GetFirstItem("Body") ist das Format kaputt, obwohl alle Infos aus dem Mail noch vorhanden sind.
Genau das meine ich.
Gruß
Manfred