Ich kann dir ein paar Tipps geben wie es in Lotus-Script funktioniert:
1. man muss "Session.ConvertMime = false" setzen
2. das Setzen eines "Content-Type" Headers scheint nicht immer richtig zu funktinieren
3. Zum Schluss unbedingt closeMimeEntity aufrufen (vergisst man dies, stürzt gerne der client ab)
4. wenn alles getan ist, sollte man ConvertMime wieder auf den ursprünglichen Wert wiederherstellen
ich hab mal ein paar Codeschnipsel auf das Wesentliche zusammenkopiert. Hier erzeuge ich mein root-mime folgendermaßen:
| convertStatus = session.ConvertMime |
| session.ConvertMime = false |
| |
| ' ... Wurzelknoten anlegen |
| Set rootMime = doc.CreateMIMEEntity(itemName) |
| Set stream = session.CreateStream() |
| Call stream.WriteText("This is a multipart message in MIME format.") |
| Call rootMime.SetContentFromText(stream, "multipart/related", ENC_NONE ) |
| |
| ' ... Knoten mit Bodytext |
| Set contentMime = rootMime.CreateChildEntity() |
| stream.Position = 0 |
| Call contentMime.SetContentFromText(stream, "multipart/alternative", ENC_NONE ) |
| ' ... einmal als Plaintext |
| Set textMime = contentMime.CreateChildEntity() |
| Set stream = session.CreateStream() |
| Call stream.WriteText("plaintextMessage") |
| Call textMime.SetContentFromText(stream, "text/plain", ENC_IDENTITY_8BIT ) |
| Call stream.Close |
| |
| ' .... und einmal als HTML |
| Set htmlMime = contentMime.CreateChildEntity() |
| Set stream = session.CreateStream() |
| Call htmlMime.SetContentFromText(stream, {text/html; charset="utf-8"}, ENC_NONE) |
| Call htmlMime.EncodeContent(ENC_QUOTED_PRINTABLE) |
| |
| ' .... Anhang bzw. Bilder erstellen(optional) |
| |
| Set mimePart = rootMime.CreateChildEntity() |
| Set mimeData = session.CreateStream() |
| Call mimeData.WriteText(base64content) |
| Call mimePart.SetContentFromText(mimeData, "image/" +imagetype, ENC_BASE64) |
| Call mimePart.CreateHeader("Content-ID").SetheaderVal("<bild1@mydomain>") |
| ' ... über <img src="cid:bild1@mydomain"> kann dieses Bild ggf in die Mail eingebettet werden |
| |
| Call doc.CloseMIMEEntities(True, itemName) |
| ' ab jetzt darf nicht mehr auf diese Mimeparts zugegriffen werden |
| |
| ' ganz zum Schluss (am Besten nach dem Speichern) |
| session.ConvertMime = convertStatus |
| |
Die Mail (bzw. das mime-item) hat dann folgenden Aufbau
| + multipart/related |
| + multipart/alternative (es wird der letzte Part, sowit unterstützt, angezeigt) |
| + text/plain |
| + text/html |
| + image/gif (optional) |
Vielleicht kannst du obigen Code auf Java adaptieren...
p.S. Passt man beim Umgang mit MimeEntities nicht auf, bekommt man u.U. Dokumente, welche man nicht mehr öffnen/löschen oder sonstwas kann. Wenn hier wer eine Lösung hat, wie man diese Dokumente wieder los wird, wäre ich sehr daran interessiert :-)