You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by Adrian Geissel <ag...@zenark.com> on 2001/10/02 12:30:00 UTC

[C1] Update / enhancement for the sendmail.xsl logicsheet

Hi all,

I appologise in advance for submitting this update / enhancement to
cocoon-users - but perhaps a member of the cocoon-dev list can do the
needful :)

The replacement template from sendmail.xsl included below allows sending of
rich-text mail content. HTML content can be included by qualifying the
<sendmail:body/> tag with a mime-type attribute, for example:

    <sendmail:send-mail>
       ...
       <sendmail:body mime-type="text/html">
    </sendmail:send-mail>

I believe that this change should also work with the C2 logicsheet, but I
have not yet had a chance to try that.
Hope others find this useful,

Cheers
Adrian


<xsl:template match="sendmail:send-mail">
  <xsl:variable name="from"><xsl:call-template
name="get-nested-string"><xsl:with-param name="content"
select="sendmail:from"/></xsl:call-template></xsl:variable>
  <xsl:variable name="to"><xsl:call-template
name="get-nested-string"><xsl:with-param name="content"
select="sendmail:to"/></xsl:call-template></xsl:variable>
  <xsl:variable name="subject"><xsl:call-template
name="get-nested-string"><xsl:with-param name="content"
select="sendmail:subject"/></xsl:call-template></xsl:variable>
  <xsl:variable name="body"><xsl:call-template
name="get-nested-string"><xsl:with-param name="content"
select="sendmail:body"/></xsl:call-template></xsl:variable>
  <xsl:variable name="mime-type">
    <xsl:choose>
      <xsl:when test="sendmail:body/@mime-type"><xsl:value-of
select="sendmail:body/@mime-type"/></xsl:when>
      <xsl:otherwise>text/plain</xsl:otherwise>
    </xsl:choose>
  </xsl:variable>
  <xsl:variable name="smtphost"><xsl:call-template
name="get-nested-string"><xsl:with-param name="content"
select="sendmail:smtphost"/></xsl:call-template></xsl:variable>
  <xsp:logic>
    try {
      Properties _properties = new Properties(this._properties);
      if (!"null".equals(String.valueOf(<xsl:copy-of select="$smtphost"/>)))
{
        _properties.put("mail.smtp.host",String.valueOf(<xsl:copy-of
select="$smtphost"/>));
      }
      Session _sendmail_session =
Session.getDefaultInstance(_properties,null);
      Message _message = new MimeMessage(_sendmail_session);
      InternetAddress _from = new
InternetAddress(String.valueOf(<xsl:copy-of select="$from"/>));
      _message.setFrom(_from);
      InternetAddress _to = new InternetAddress(String.valueOf(<xsl:copy-of
select="$to"/>));
      _message.setRecipient(Message.RecipientType.TO,_to);
      _message.setSentDate(new Date());
      _message.setSubject(String.valueOf(<xsl:copy-of select="$subject"/>));
      _message.setContent(String.valueOf(<xsl:copy-of select="$body"/>),
String.valueOf("<xsl:copy-of select="$mime-type"/>"));
      Transport.send(_message);
    } catch (AddressException e) {
      <error type="user">Your email address is invalid.</error>
    } catch (MessagingException e) {
      <error type="server">An error occured while sending email.</error>
    }
  </xsp:logic>
</xsl:template>



---------------------------------------------------------------------
Please check that your question has not already been answered in the
FAQ before posting. <http://xml.apache.org/cocoon/faqs.html>

To unsubscribe, e-mail: <co...@xml.apache.org>
For additional commands, e-mail: <co...@xml.apache.org>