MailPublisher (Objekt)

Aus SiteparkWiki
Version vom 3. November 2010, 13:13 Uhr von Veltrup (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
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 (Für Attachements muss sub-type="mixed" im <body> 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