Q:管理画面で設定項目したメールで届かないものがあります。
A:管理画面内で設定するメールの形式に<>が付いている項目とそうでないものがあることに注意してください。
「アカウント作成完了メール(コピー)の送信先」や、「「お問い合わせ」メールのドロップダウン設定」では、宛名+<メールアドレス>のフォーマットで指定できますが、その他の項目ではそのようには指定されていません。
設定のコメント欄の設定例に「名前1 <email@address1>, 名前2 <email@address2>」の記述がないものは、“メールアドレスを一つだけ”宛名などを付けずに指定してください。
Q:問い合わせ画面からのメールの送信先の設定がわかりません。
A:管理画面の「一般設定」>「メールの設定」画面より、
「お問い合わせ」メールのドロップダウン設定 項目で設定されているメールアドレスに送信されます。
ここでは、「お問い合わせ」ページで、メールアドレスのリストを設定し、ドロップダウンリストとして表示させることができます。
例えば、
商品に関するお問い合せ <sales@zencart-pro.com>, 購入後のトラブル <support@zen-cart.com> などのように、問い合わせ画面からのメール送信先をお客様に選択していただけるように設定する事ができます。
※ この項目でメールアドレスの設定をしていない場合は、同じ画面内の「メールアドレス (顧客への送信元)」の項目で設定されたメールアドレスに送信されます。
Q: メールの送信内容を変更できますか?
A: 決まった場所に表示される文字列を変更するだけであれば言語ファイルで対応できますが、表示順を変えるなどする場合は、専用の「メールテンプレート」ファイルを修正する必要があります。
管理画面よりEmailテキストのフォーマットに対する変更はできませんので、修正のレベルに応じて直接「言語ファイル」や「メールテンプレートファイル」に変更を行います。
大変繊細な部分ですので、作業は極めて慎重に進めてください。
※ ZenCartProシリーズは携帯対応を前提としていますので、HTMLによるメール送信機能の利用は推奨されていません。ご了承ください。
■ Emailが、どの様に生成されるかを理解する
ZenCart のいろいろな場面において送信される Email は、実際のところいくつかの「部品」を組み合わせることで構成されています。
言語ファイル内にある "define()" で定義されている文字列や、データベース内のデータ、メールレイアウト用テンプレートなどから表示すべき内容をレイアウトして出力します。
今回は、会員登録時に自動送信される 「ウェルカムメール」 をサンプルとして、どの様に送信前のメールが生成されるのかの過程を大まかに説明します。
Email の基本構成は /email ディレクトリ内にあるメールテンプレートファイルにをベースにします。
言語毎に設定が可能であるため、通常は /email/ja ディレクトリ内のファイル群で日本語用の設定を変更します。
ウェルカムメールの場合であれば、 /email/ja/email_template_welcom.html がそれにあたりますので、開いて中を見てみます。
$ マークが頭についている文字列は「テンプレートタグ」です。HTMLのソースタグはHTMLメールの場合の表示の枠組みになります。
「テンプレートタグ」は、表示場所の指定に利用します。
それぞれの「テンプレートタグ」を記述した位置に、言語ファイル内の"define()"で定義されている文字列やデータベース内に保存されているショップに関する設定項目、そして ZenCart が動的に生成されるタグに対応する情報に置き換えられます。
「テンプレートタグ」がどのように情報の位置指定に利用されるかの例として
/includes/languages/japanese/create_account.php を開いて見てください。
23行目あたりにあるコードを見ると以下のような記述があります。
define('EMAIL_WELCOME', '謹啓 この度は<strong>' . STORE_NAME . 'にご登録いただきありがとうございました。</strong>');
ここで EMAIL_WELCOME に対応する文字列として定義されている部分が、メールテンプレートの中の $EMAIL_WELCOME の部分で表示されます。
また、上記の定義文字列内にある STORE_NAME の部分は、「一般設定」>「ショップ全般の設定」ページの中で「ショップ名」として設定した文字列が入ります。
ZenCart が動的に生成する内容に関しては、PHPとZenCart 自体に対するかなりの知識がないと理解する事が難しいため、ここでの説明は省きます。
■ メールのテキストを変更する
上記の解説通り、比較的自由に変更できるのは、管理画面から設定できる内容のほかに言語ファイル内にある "define()" で定義された部分になります。
言うまでもなく、言語毎の変更が必要ですので携帯(mobile)を含め英語などの言語を利用される場合には対応する言語ファイルにも手を加える必要があるでしょう。
これらの言語ファイルの変更作業を効率的に行うには、以下の順序で対象ファイルを見つける事が出来ます。
1、 修正したい部分のあるメールがどのタイミングで送信されるものかを考えます。
2、 /email ディレクトリ内のファイル名からどの場面で送信するメール用テンプレート
であるかを想定して内容を確認します。
3、 表示場所の関連性などから、テンプレートタグを見つけ出します。
例えば、 $EMAIL_WELCOME だったとします。
4、 ZenCart の管理画面にログインし、「追加設定・ツール」>「開発者用ツール」
の画面を開きます。
この画面は、特定のファイルにある文字列がどのファイルに含まれているのかを
探し出すのに助けになります。
5、 一番上の「CONSTANT(定数)-言語定義ファイルを検索」の「キーまたは名前」
検索フィールドに先ほどのテキストを$なしで入力します。
例えば、 EMAIL_WELCOME と入力します。
6、 右の「言語ファイルの検索」ドロップダウンでは「現在選択中のすべての言語ファイル」
を選択して、『検索』を実行します。
7、 ページ上部に
/var/www/vhosts/mydomain.com/httpdocs/includes/languages/japanese/create_account.php
Line #22 : define('EMAIL_WELCOME', '謹啓 この度は<strong>' . STORE_NAME . 'にご登録いただきありがとうございました。</strong>');
/var/www/vhosts/mydomain.com/httpdocs/includes/languages/japanese/create_guest_account.php
Line #14 : define('EMAIL_WELCOME', '謹啓 この度は<strong>' . STORE_NAME . 'にゲストご登録いただきありがとうございました。</strong>');
の様な検索結果が表示されます。
ファイル名と行番号を元に修正すべき場所を特定します。
オーバーライドシステムを利用して、ファイルをふさわしい内容に変更してください。
※ 注意:
メールレイアウトテンプレートはオーバーライドできません。
このファイル類に手を加えたい場合には必ずバックアップを取った上で作業してください。
Q: 注文メールのフッタなどに自動挿入される copyright の部分を変更したい。
A: デフォルトでは、"Copyright (c) 2003-2006 Zen Cart. Powered by Zen Cart" のコピーライトが挿入されます。
送信されるメールの中で日本語で表示されている部分は言語ファイルの定義ですので、必要に応じて変更する事が可能ですが、上記コピーライトも同じファイル内に指定があります。
メール用言語定義ファイル: /includes/languages/japanese(言語毎に)/email_extras.php
の中に以下のような定義部分がありますのでここで変更が可能です。(日本語・携帯・英語 それぞれに言語定義があります)
define('EMAIL_FOOTER_COPYRIGHT','Copyright (c) 2003-2006 <a href="http://www.zen-cart.com" _fcksavedurl="http://www.zen-cart.com" _fcksavedurl="http://www.zen-cart.com" target="_blank">Zen Cart</a>. Powered by <a href="http://www.zen-cart.com" target="_blank">Zen Cart</a>');
Q:「追加設定・ツール」>「メールの送信」から送ったメールの送信元が "Root User" になってしまった。
A:送信時に「差出人」欄を変更していませんか?
基本的には、「一般設定」の中の「メールの設定」にある「メールアドレス (顧客への送信元)」より、「ショップ全般の設定」で登録している「ショップ名」で送信されます。
しかし、送信時に「差出人」枠を変更してしまうと、処理の過程で fromにメールアドレスと名前をセットする部分が処理されずにデフォルトの $FromName = 'Root User'; がセットされた状態で送信されることになります。