FileMaker XSLT でのメール送信
2006年 11月 22日
書籍「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,'&cc=',$mail_cc,'&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」ここまで】-----------------------
具体的なメール送信のサンプルが載っていなかったのでレポートしておきます。
確認した環境は、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,'&cc=',$mail_cc,'&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