MailPublisher (Objekt)

Aus SiteparkWiki
Zur Navigation springen Zur Suche springen
Dieser Artikel bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf bitte mit ihn zu verbessern und entferne anschließend diese Markierung.

Name

MailPublisher - Publiziert Artikel, Resourcen und Medien als E-Mail

Beschreibung

Ein MailPublisher publiziert Artikel, Resourcen und Medien als E-Mail. Dazu muss das Ausgabe-Template in einer XML-Struktur die Daten für die E-Mail beschreiben.

Begonnen wird eine Mail-Publisher Definition mit <mail-publishing> Sollen mehrere Mails verschickt werden und enthalten diese Mails identische Bereiche können sie unterhalb von <mail-publishing> mit <bodypart-ref> definiert werden.

<bodypart-ref id="myplain">Reine Text Mail</bodypart-ref>

Um HTML im bodypart zu definieren muß der Text zunächst in eine Variable gespeichert werden, damit sie über sp:print xml-encodet werden kann.

<sp:set name="htmlvaue">
<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
<html>
  Eine <b>HTML</b> Mail!

  Ein Image-Attachment kann über die Content-ID referenziert werden:<br>
  <img src="cid:myimage">
</html>
</sp:set>

<bodypart-ref id="myhtml" content-type="text/html; charset=us-ascii">
  <sp:print name="htmlvalue" encoding="xml"/>
</bodypart-ref>

Für Datei Attachments muß mit dem file-Attribute die Binary-ID des Mediums angegeben werden. Über die ID kann auch innerhalb von HTML auf die Attachments zugegriffen werden (<img src="cid:myimage">)

<bodypart-ref
 id="myimage"
 disposition="inline"
 file="<sp:print name="!{myimage}.media.binary"/>"/>

Optional kann für ein Attachment auch der Dateiname explizit angegeben werden

<bodypart-ref
 id="myimage"
 disposition="attachment"
 file="<sp:print name="!{myimage}.media.binary"/>"
 filename="<sp:print name="!{myimage}.media.originalFilename"/>"/>


Die einzelnen Body-Parts können auch verschachtelt werden. Bei Verschachtelungen kann noch ein sub-type angegeben werden. Gültige Werte sind 'mixed' und 'alternative'

<body-part-ref id="subpart" sub-type="alternative">
  <body-part-ref>Teil mit dem ersten Text</body-part-ref>
  <body-part-ref>Teil mit dem zweiten Text</body-part-ref>
</body-part-ref>

Nach dem die Body-Part definiert sind die für alle Mails identisch sind, werden auch unterhalb von <mail-publishing> die Mails mit <mail> definiert.

<mail>

Unterhalb von <mail> können Mail-Header angegeben werden

<header name="Reply-To">zumir@zu.hause.de</header>

Unterhalb von <mail> können Properties definiert werden, die in den Body-Parts ersetzt werden

<property name="var1">ein Text</property>

Kommt in den Body-Parts die Zeichenkette ${var1} vor wird diese durch 'ein Text' ersetzt. Unterhalb von <mail> wird die From-Addresse Angegeben

<from personal="Peter Pan" address="peter.pan@nimmerland.net"/>

Unterhalb von <mail werden die To, CC und BCC Adressen angegeben

<to personal="Heinz Müller" address="hm@domain.com"/>
<cc personal="Peter Lustig" address="peter.lustig@loewenzahl.de"/>
<bcc personal="Nich Lustig" address="info@nl.de"/>

Unterhalb von <mail> wird anschließend der Body mit <body> definiert.

<body>

Body kann optional einen sub-type enthalten. Gültige Werte sind 'mixed' und 'alternative'

<body sub-type="alternative">

Für einfache Mail's kann hier direkt der Body-Text eingetragen werden.

<body content-type="text/html">
  <sp:print name="htmlvalue" encoding="xml"/>
</body>

Es kann auch eine bodypart-ref verwendet werden

<body ref="myhtml"/>

Für Mehrteilige Mails werden unterhalb von <body> die einzelnen <body-part>'s angegeben

<body sub-type="alternative">
<bodypart ref="myplain"/>
<bodypart ref="myhtml"/>
<bodypart ref="myimage"/>
</body>

Die Mail kann auch noch weiter verschachtelt werden

<body sub-type="alternative">
  <bodypart ref="myplain"/>
  <bodypart ref="myhtml"/>
  <bodypart>
    <bodypart ref="myimage1"/>
    <bodypart ref="myimage2"/>
  </bodypart>
</body>

Der <mail>-Tag kann beliebig (Die Rechner-Resourcen beschränken die Anzahl) wiederholt werden um mehrere Mails zu generieren. Es sollte allerdings darauf geachtet werden, dass nicht unnötig viel Content innerhalb von <mail> steht. Vielmehr sollten die <body-part-ref>-Tags für die Content-Lastigen Teile verwendet werden.

Multipart-Mail Beispiel

<%-----------------%>
<%-- HTML HEADER --%>
<%-----------------%>
<sp:set name="htmlheader" value="
<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">

<html>
<head>
  <meta content=\"text/html;charset=ISO-8859-15\"
 http-equiv=\"Content-Type\"> <title>ein titel</title>
</head>
<body>"/>

<%-----------------%>
<%-- HTML BODY   --%>
<%-----------------%>
<sp:set name="htmlbody" value="
  <p>
  Dies ist eine <b>HTML</b>-Mail<br>
  Und ein Bild:<br>
  <img src=\"cid:htmlimg\"/>
  </p>
"/>

<%-----------------%>
<%-- HTML FOOTER --%>
<%-----------------%>
<sp:set name="htmlfooter" value="
</body>
</html>"/>


<%---------------------%>
<%-- MAIL_PUBLISHING --%>
<%---------------------%>

  <mail-publishing>
    <bodypart-ref id="plaintext">Hallo ${salutation} ${lastname}
      Dies ist eine Plain-Text Mail.
    </bodypart-ref>
    <bodypart-ref id="htmlheader" content-type="text/html;charset=us-ascii">
      <sp:print name="htmlheader" encoding="xml"/></bodypart-ref>
    <bodypart-ref id="htmlbody" content-type="text/html;charset=us-ascii">
      <sp:print name="htmlbody" encoding="xml"/></bodypart-ref>
    <bodypart-ref id="htmlfooter" content-type="text/html;charset=us-ascii">
      <sp:print name="htmlfooter" encoding="xml"/></bodypart-ref>
    <bodypart-ref id="htmlimg" disposition="inline"
      file="<sp:print name="!{traumschiff}.media.binary"/>"/>

    <sp:for from="0" to="1" index="i">
    <mail>
      <header name="aaa">fff</header>
      <property name="salutation">Herr</property>
      <property name="lastname">Veltrup</property>
      <from personal="Holger Veltrüp" address="veltrup@sitepark.com"/>
      <to personal="Holger Veltrüp" address="veltrup@sitepark.com"/>
      <subject>publishing mail-test (<sp:print name="i"/>)</subject>
      <body sub-type="alternative">
        <bodypart ref="plaintext"/>
        <bodypart ref="htmlheader"/>
        <bodypart content-type="text/html">
          Hallo ${salutation} ${lastname},
        </bodypart>
        <bodypart ref="htmlbody"/>
        <bodypart ref="htmlfooter"/>
        <bodypart ref="htmlimg"/>
      </body>
    </mail>
    </sp:for>
  </mail-publishing>


Attribute

Attribut Type Beschreibung ab IES Version
id ID ID des Publishers 1
type String Liefert immer mail 1
anchor Anchor Anchor des Publishers 1
name String Name des Publishers 1
encoding String Encoding das der Publisher verwenden soll (UTF-8, ISO-8859-15, ...) 1
locale Locale Die Sprache, die für diesen Publisher verwendet werden soll 1
clients Collection <Client> Liste der Mandanten, die Zugriff auf diesen Publisher haben 1
metadata Map <String,String> Metadaten eines Publishers 1
metadataString String Metadaten eines Publishers als Zeichenkette. Jede Zeile ein Schlüssel/Werte-Paar getrennt mit einem = (gleich) 1
isPublished Boolean Liefert im Out-Modus true, wenn der Artikel vom Publisher publiziert wird oder false, wenn der Artikel vom Publisher depubliziert wird 1