人気ブログランキング | 話題のタグを見る

まこっちのぶろぐ


by macocci7
カレンダー
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

FileMaker XSLT でのメール送信

書籍「FileMaker Server カスタム Web テクニック」には、
具体的なメール送信のサンプルが載っていなかったのでレポートしておきます。

確認した環境は、FileMaker Server 8 Advanced (8.0v2) です。

XSLTテンプレートファイルのサンプルを参考までに添付します。
・「registed_sample.xsl」:登録完了画面表示用のXSLTテンプレートファイル
・「mail_sample.xslt」:HTMLメール送信用XSLTテンプレートファイル
「registed_sample.xsl」の始めの方の記述(13行目~28行目)で、
「mail_sample.xslt」を使ってメール送信するよう記述してあります。
メール送信方法の詳細は、書籍「FileMaker Server カスタム Web テクニック」
P128~P130/P184~P185 を参照してください。
著者のサイト

以下、私の方で気付いた、メール送信を行う際の注意点を記します。

注意点

1.メールの内容を別ファイルにする際、HTML形式でないと送信できない。
 添付ファイル「mail_sample.xslt」の記述を見ていただくとわかりますが、
 出力をHTML形式にし、
<xsl:output method="html" encoding="ISO-2022-JP"/>
 最低限 <html></html> のタグを入れないと
 送信されません。method="text" にすると送信されません。

2.メール送信用XSLTテンプレートファイルは正確な記述が要求される
 通常のHTML出力用のXSLTテンプレートファイルのように、
 エラーメッセージを出力してくれないので、
 どこがどのようにエラーなのかが、さっぱり判りません。
 エラーの場合は、ひたすら「false()」値が返されるだけです。
 自分の目を頼りにエラー箇所を探して直すしかないようです。

3.メールのタイトルに全角スペースを使うと文字化けする
 →Web公開エンジンのアップデータを適用し、v8.0.28にしたところ、メールのタイトルに全角スペースを使った際の文字化けがなくなりました。

4.全角ハイフン「-」は、本文でも文字化けする。
 以前、Shift_JISで作成していた時点でなやまされた点ですが、
 HTML出力をUTF-8にしたら解決していた箇所です。
 メール送信時は、ISO-2022-JPにするので文字化けし「?」になります。

5.メール送信結果を評価しないとメール送信されない(評価時に送信)
 送信結果を、変数 $sending_mail に格納しているのですが、
 この変数を以下のようにどこかの箇所で出力しないとメール送信されません。
<xsl:value-of select="$sending_mail"/>
 私の場合、HTMLのコメントとして出力するようにしました。
<xsl:comment><xsl:value-of select="$sending_mail"/></xsl:comment>
 詳細は添付ファイル「registed_sample.xsl」を参照してください。

以上

--------【以下、「registed_sample.xsl」】-----------------------
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fmrs="http://www.filemaker.com/xml/fmresultset"
xmlns:fmq="http://www.filemaker.com/xml/query"
xmlns:fmxslt="xalan://com.fmi.xslt.ExtensionFunctions"
xmlns:mimeutility="xalan://javax.mail.internet.MimeUtility"
exclude-result-prefixes="xsl fmrs fmq fml fmxslt mimeutility"
version="1.0">

<?xslt-cwp-query params="-grammar=fmresultset&-db=WebEntry&-lay=web&-new"?>

<xsl:output encoding="UTF-8" doctype-public="-//W3C/DTD HTML 4.01 Transitional//EN"/>
<!--メール送信/-->
<xsl:variable name="mail_from" select="'[email protected]'"/>
<xsl:variable name="mail_to" select="/fmrs:fmresultset/fmrs:resultset/fmrs:record/fmrs:field[@name='連絡先メールアドレス']/fmrs:data"/>
<xsl:variable name="mail_cc" select="'[email protected]'"/>
<xsl:variable name="mail_subject">
<xsl:choose>
<xsl:when test="/fmrs:fmresultset/fmrs:resultset/fmrs:record/fmrs:field[@name='登録エラーフラグ']/fmrs:data!='1'">
<xsl:value-of select="mimeutility:encodeText('セミナー申込登録の確認','ISO-2022-JP','B')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="mimeutility:encodeText('セミナー申込登録エラー','ISO-2022-JP','B')"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="sending_mail" select="fmxslt:send_email(concat($mail_to,'?from=',$mail_from,'&amp;cc=',$mail_cc,'&amp;subject=',$mail_subject),'mail_sample.xslt',/,true())"/>
<!--/メール送信-->

<xsl:template match="/">
<xsl:comment>メール送信結果:<xsl:value-of select="$sending_mail"/></xsl:comment>
<html>
<body>
○×セミナー受講申込<br/>
<br/>
<xsl:choose>
<xsl:when test="/fmrs:fmresultset/fmrs:resultset/fmrs:record/fmrs:field[@name='登録エラーフラグ']/fmrs:data!='1'">
申込受付登録に失敗しました。<br/>
[email protected] までお問い合わせ下さい。<br/>
</xsl:when>
<xsl:otherwise>
申込受付登録完了しました。<br/>
お申し込みありがとうございました。<br/>
</xsl:otherwise>
</xsl:choose>
</body>
</html>
</xsl:template>

</xsl:stylesheet>
--------【「registed_sample.xsl」ここまで】-----------------------

--------【以下、「mail_sample.xslt」】-----------------------
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fmrs="http://www.filemaker.com/xml/fmresultset"
exclude-result-prefixes="xsl fmrs"
version="1.0">

<xsl:output method="html" encoding="ISO-2022-JP"/>

<xsl:template match="/">
<html>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>

<xsl:template match="/fmrs:fmresultset/fmrs:resultset/fmrs:record">
<xsl:value-of select="fmrs:field[@name='姓']/fmrs:data"/> 様<br/>
<br/>
<xsl:choose>
<xsl:when test="fmrs:field[@name='登録エラーフラグ']/fmrs:data!='1'">
申込受付登録に失敗しました。<br/>
[email protected] までお問い合わせ下さい。<br/>
</xsl:when>
<xsl:otherwise>
申込受付登録完了しました。<br/>
お申し込みありがとうございました。<br/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>

</xsl:stylesheet>
--------【「mail_sample.xslt」ここまで】-----------------------
by macocci7 | 2006-11-22 17:14 | FileMaker