Message-Part.
Darf einfach oder Multi oder eine Kombination aus beiden sein.
Fuer Multi existieren zwei Konstruktoren, die wiederum mehrere Parts
als VarArgsArray entgegennehmen. Bei einem laesst sich zudem der
Smtp.MultiPartType
bestimmen. Der andere setzt
auf den Standard
Smtp.MultiPartType.MIXED
.
Alle Konstruktoren erwarten entweder
String
oder
byte[]
-Parameter als Body-Payload. Dieser darf vorher
nicht in irgend einer Weise formatiert oder kodiert sein.
Smtp.PartType
ist ein Enum, welches die wichtigsten Typen mittels
Smtp.PartTypeInfo
vorkonfiguriert, also Content-Type und ob
Content-Transfer-Encoding
mit base64 gesetzt werden muss.
Das Info-Object kann aber auch direkt an einen weiteren Konstruktor
uebergeben werden und laesst so auch frei definierbare Typen zu.
Einige Konstruktoren setzen zudem das Member
file
. Ist dieses
nicht
null
, dann wird zusaetzlich ein
Content-Disposition: attachment;
mit diesem Dateinamen gesendet.
Wenn der Name jedoch ein @ enthaelt, z.B. "foo@bar", dann wird
stattdessen
Content-Id
mit diesem Wert besetzt, was nur
in einem
Smtp.MultiPartType.RELATED
-Block sinnvoll ist. Beispiel:
Wichtig: Der erste Part muss das Hauptdokument sein
Part part = new Part(MultiPartType.RELATED,
new Part("<img src=\"" + "cid:file@jpg" + "\"></img>", PartType.HTML),
new Part(imgBytes, PartType.JPG, "file@jpg")
);
Hinweis:
Viele Mail-Apps, insbesondere die auf Mobilgeraeten, koennen das nicht mehr
richtig anzeigen. Ausserdem gilt die related-Mechanik als veraltet.
Daher sollte man in HTML-Mails besser Data-URLs einsetzen, z.B. mittels
Smtp.PartTypeInfo.dataUrl(byte[])
, oder gleich auf externe URLs verlinken.
Fuer bereits vordefinierte Typen laesst sich dieses Info-Objekt auch direkt
via
Smtp.PartType.pti
ermitteln.