diff --git a/plugins/BcColumn/config/data/default/BcMail/mail_contents.csv b/plugins/BcColumn/config/data/default/BcMail/mail_contents.csv index 8f6e8b3240..821c43b10a 100755 --- a/plugins/BcColumn/config/data/default/BcMail/mail_contents.csv +++ b/plugins/BcColumn/config/data/default/BcMail/mail_contents.csv @@ -1,2 +1,2 @@ -id,description,sender_1,sender_2,sender_name,subject_user,subject_admin,form_template,mail_template,redirect_url,auth_captcha,widget_area,ssl_on,save_info,publish_begin,publish_end,created,modified -1,"

お問い合わせの内容を入力してください。

",,,baser company お問い合わせ,【baser company】お問い合わせ頂きありがとうございます。,【baser company】お問い合わせを受け付けました,default,mail_default,/,1,,,1,,,, +id,description,,thanks,unpublish,sender_1,sender_2,sender_name,subject_user,subject_admin,form_template,mail_template,redirect_url,auth_captcha,widget_area,ssl_on,save_info,publish_begin,publish_end,created,modified +1,"

お問い合わせの内容を入力してください。

",,,,,baser company お問い合わせ,【baser company】お問い合わせ頂きありがとうございます。,【baser company】お問い合わせを受け付けました,default,mail_default,/,1,,,1,,,, diff --git a/plugins/BcThemeSample/config/data/default/BcMail/mail_contents.csv b/plugins/BcThemeSample/config/data/default/BcMail/mail_contents.csv index 55e4fe2aab..5eed39de49 100755 --- a/plugins/BcThemeSample/config/data/default/BcMail/mail_contents.csv +++ b/plugins/BcThemeSample/config/data/default/BcMail/mail_contents.csv @@ -1,2 +1,2 @@ -"id","description","sender_1","sender_2","sender_name","subject_user","subject_admin","form_template","mail_template","redirect_url","auth_captcha","widget_area","ssl_on","save_info","auth_captcha","publish_begin","publish_end","created","modified" -"1","

このコンテンツはメールフォーム機能により作られており、この文章については管理画面の [お問い合わせ] → [設定] より更新ができます。また、メールフォームは [コンテンツ管理] よりいくつでも作成することができます。

","","","baserCMSサンプル","【baserCMS】お問い合わせ頂きありがとうございます。","【baserCMS】お問い合わせを受け付けました","default","mail_default","/","1","","","1","1","","","","" +"id","description","thanks","unpublish","sender_1","sender_2","sender_name","subject_user","subject_admin","form_template","mail_template","redirect_url","auth_captcha","widget_area","ssl_on","save_info","auth_captcha","publish_begin","publish_end","created","modified" +"1","

このコンテンツはメールフォーム機能により作られており、この文章については管理画面の [お問い合わせ] → [設定] より更新ができます。また、メールフォームは [コンテンツ管理] よりいくつでも作成することができます。

","

お問い合わせ頂きありがとうございました。
確認次第、ご連絡させて頂きます。

","

現在、受付を中止しています。

","","","baserCMSサンプル","【baserCMS】お問い合わせ頂きありがとうございます。","【baserCMS】お問い合わせを受け付けました","default","mail_default","/","1","","","1","1","","","","" diff --git a/plugins/BcThemeSample/config/data/empty/BcMail/mail_contents.csv b/plugins/BcThemeSample/config/data/empty/BcMail/mail_contents.csv index ab82327a6e..8914c2bbd2 100755 --- a/plugins/BcThemeSample/config/data/empty/BcMail/mail_contents.csv +++ b/plugins/BcThemeSample/config/data/empty/BcMail/mail_contents.csv @@ -1,2 +1,2 @@ -"id","description","sender_1","sender_2","sender_name","subject_user","subject_admin","form_template","mail_template","redirect_url","auth_captcha","widget_area","ssl_on","save_info","auth_captcha","publish_begin","publish_end","created","modified" -"1","","","","サンプル","お問い合わせ頂きありがとうございます。","お問い合わせを受け付けました","default","mail_default","/","","","","1","1","","","","" +"id","description","thanks","unpublish","sender_1","sender_2","sender_name","subject_user","subject_admin","form_template","mail_template","redirect_url","auth_captcha","widget_area","ssl_on","save_info","auth_captcha","publish_begin","publish_end","created","modified" +"1","","","","","","サンプル","お問い合わせ頂きありがとうございます。","お問い合わせを受け付けました","default","mail_default","/","","","","1","1","","","","" diff --git a/plugins/baser-core/src/View/Helper/BcBaserHelper.php b/plugins/baser-core/src/View/Helper/BcBaserHelper.php index 6d09b4ef0b..0c2ca0bf67 100755 --- a/plugins/baser-core/src/View/Helper/BcBaserHelper.php +++ b/plugins/baser-core/src/View/Helper/BcBaserHelper.php @@ -127,6 +127,10 @@ * @method array getMailFormGroupValidErrors(array $mailFields, string $groupValid, array $options = [], bool $distinct = true) * @method bool isMailFormGroupLastField(ResultSet $mailFields, MailField $currentMailField) * @method string mailFormLabel(string $fieldName, ?string $text = null, array $options = []) + * @method bool mailFormThanksExists() + * @method void mailFormThanks() + * @method bool mailFormUnpublishExists() + * @method void mailFormUnpublish() * * ### BcUploadHelper * @method void setTableToUpload(string $tableName) diff --git a/plugins/bc-admin-third/templates/plugin/BcMail/Admin/element/MailContents/form.php b/plugins/bc-admin-third/templates/plugin/BcMail/Admin/element/MailContents/form.php index de8d8c1f3d..9035138d31 100644 --- a/plugins/bc-admin-third/templates/plugin/BcMail/Admin/element/MailContents/form.php +++ b/plugins/bc-admin-third/templates/plugin/BcMail/Admin/element/MailContents/form.php @@ -39,6 +39,40 @@ +
+ + + BcAdminForm->ckeditor('thanks', [ + 'editorWidth' => 'auto', + 'editorHeight' => '120px', + 'editorToolType' => 'simple', + 'editorEnterBr' => $editorEnterBr + ]) + ?> + BcAdminForm->error('thanks') ?> + +
+ +
+ + + BcAdminForm->ckeditor('unpublish', [ + 'editorWidth' => 'auto', + 'editorHeight' => '120px', + 'editorToolType' => 'simple', + 'editorEnterBr' => $editorEnterBr + ]) + ?> + BcAdminForm->error('unpublish') ?> + +
+
diff --git a/plugins/bc-front/config/data/default/BcMail/mail_contents.csv b/plugins/bc-front/config/data/default/BcMail/mail_contents.csv index ab82327a6e..8914c2bbd2 100755 --- a/plugins/bc-front/config/data/default/BcMail/mail_contents.csv +++ b/plugins/bc-front/config/data/default/BcMail/mail_contents.csv @@ -1,2 +1,2 @@ -"id","description","sender_1","sender_2","sender_name","subject_user","subject_admin","form_template","mail_template","redirect_url","auth_captcha","widget_area","ssl_on","save_info","auth_captcha","publish_begin","publish_end","created","modified" -"1","","","","サンプル","お問い合わせ頂きありがとうございます。","お問い合わせを受け付けました","default","mail_default","/","","","","1","1","","","","" +"id","description","thanks","unpublish","sender_1","sender_2","sender_name","subject_user","subject_admin","form_template","mail_template","redirect_url","auth_captcha","widget_area","ssl_on","save_info","auth_captcha","publish_begin","publish_end","created","modified" +"1","","","","","","サンプル","お問い合わせ頂きありがとうございます。","お問い合わせを受け付けました","default","mail_default","/","","","","1","1","","","","" diff --git a/plugins/bc-front/templates/plugin/BcMail/Mail/default/submit.php b/plugins/bc-front/templates/plugin/BcMail/Mail/default/submit.php index 55a8225761..f556955b98 100755 --- a/plugins/bc-front/templates/plugin/BcMail/Mail/default/submit.php +++ b/plugins/bc-front/templates/plugin/BcMail/Mail/default/submit.php @@ -34,8 +34,12 @@

-

-

+ BcBaser->mailFormThanksExists()): ?> + BcBaser->mailFormThanks() ?> + +

+

+ BcBaser->isDebug() && $mailContent->redirect_url): ?>

diff --git a/plugins/bc-front/templates/plugin/BcMail/Mail/default/unpublish.php b/plugins/bc-front/templates/plugin/BcMail/Mail/default/unpublish.php index f41a865f07..27d34b59eb 100755 --- a/plugins/bc-front/templates/plugin/BcMail/Mail/default/unpublish.php +++ b/plugins/bc-front/templates/plugin/BcMail/Mail/default/unpublish.php @@ -23,4 +23,10 @@

-

+
+ BcBaser->mailFormUnpublishExists()): ?> + BcBaser->mailFormUnpublish() ?> + +

+ +
diff --git a/plugins/bc-mail/config/Migrations/20250501800000_AddThanksAndUnpublishToMailContents.php b/plugins/bc-mail/config/Migrations/20250501800000_AddThanksAndUnpublishToMailContents.php new file mode 100644 index 0000000000..b52cb0160d --- /dev/null +++ b/plugins/bc-mail/config/Migrations/20250501800000_AddThanksAndUnpublishToMailContents.php @@ -0,0 +1,41 @@ +table('mail_contents') + ->addColumn('thanks', 'text', [ + 'after' => 'description', + 'default' => null, + 'limit' => null, + 'null' => true, + ]) + ->addColumn('unpublish', 'text', [ + 'after' => 'thanks', + 'default' => null, + 'limit' => null, + 'null' => true, + ]) + ->update(); + } + + /** + * Down Method. + * @return void + */ + public function down() + { + $this->table('mail_contents') + ->removeColumn('thanks') + ->removeColumn('unpublish') + ->update(); + } +} diff --git a/plugins/bc-mail/config/Seeds/MailContentsSeed.php b/plugins/bc-mail/config/Seeds/MailContentsSeed.php index 0ddb8b8224..41865b1659 100644 --- a/plugins/bc-mail/config/Seeds/MailContentsSeed.php +++ b/plugins/bc-mail/config/Seeds/MailContentsSeed.php @@ -24,6 +24,8 @@ public function run(): void [ 'id' => 1, 'description' => '

このコンテンツはメールフォーム機能により作られており、この文章については管理画面の [お問い合わせ] → [設定] より更新ができます。また、メールフォームは [コンテンツ管理] よりいくつでも作成することができます。

', + 'thanks' => '

お問い合わせ頂きありがとうございました。
確認次第、ご連絡させて頂きます。

', + 'unpublish' => '

現在、受付を中止しています。

', 'sender_1' => '', 'sender_2' => '', 'sender_name' => 'baserCMSサンプル', diff --git a/plugins/bc-mail/src/Model/Entity/MailContent.php b/plugins/bc-mail/src/Model/Entity/MailContent.php index 5babb22437..4539f0586a 100755 --- a/plugins/bc-mail/src/Model/Entity/MailContent.php +++ b/plugins/bc-mail/src/Model/Entity/MailContent.php @@ -24,6 +24,8 @@ * Class MailContent * @property int $id * @property string $description + * @property string $thanks + * @property string $unpublish * @property string $sender_1 * @property string $sender_2 * @property string $sender_name diff --git a/plugins/bc-mail/src/Model/Table/MailContentsTable.php b/plugins/bc-mail/src/Model/Table/MailContentsTable.php index 854f16bb40..dba6cf2441 100755 --- a/plugins/bc-mail/src/Model/Table/MailContentsTable.php +++ b/plugins/bc-mail/src/Model/Table/MailContentsTable.php @@ -157,6 +157,30 @@ public function validationDefault(Validator $validator): Validator ] ]); + // thanks + $validator + ->scalar('thanks') + ->allowEmptyString('thanks') + ->add('thanks', [ + 'containsScript' => [ + 'rule' => ['containsScript'], + 'provider' => 'bc', + 'message' => __d('baser_core', '送信完了文でスクリプトの入力は許可されていません。') + ] + ]); + + // unpublish + $validator + ->scalar('unpublish') + ->allowEmptyString('unpublish') + ->add('unpublish', [ + 'containsScript' => [ + 'rule' => ['containsScript'], + 'provider' => 'bc', + 'message' => __d('baser_core', '受付中止文でスクリプトの入力は許可されていません。') + ] + ]); + // publish_end $validator ->add('publish_end', [ diff --git a/plugins/bc-mail/src/View/Helper/BcMailBaserHelper.php b/plugins/bc-mail/src/View/Helper/BcMailBaserHelper.php index d5e509ccf6..915e9cb5a2 100644 --- a/plugins/bc-mail/src/View/Helper/BcMailBaserHelper.php +++ b/plugins/bc-mail/src/View/Helper/BcMailBaserHelper.php @@ -49,6 +49,10 @@ public function methods(): array 'isMail' => ['Mail', 'isMail'], 'mailFormDescriptionExists' => ['Mail', 'descriptionExists'], 'mailFormDescription' => ['Mail', 'description'], + 'mailFormThanksExists' => ['Mail', 'thanksExists'], + 'mailFormThanks' => ['Mail', 'thanks'], + 'mailFormUnpublishExists' => ['Mail', 'unpublishExists'], + 'mailFormUnpublish' => ['Mail', 'unpublish'], 'freezeMailForm' => ['Mailform', 'freeze'], 'createMailForm' => ['Mailform', 'create'], 'mailFormHidden' => ['Mailform', 'hidden'], diff --git a/plugins/bc-mail/src/View/Helper/MailHelper.php b/plugins/bc-mail/src/View/Helper/MailHelper.php index 72e0fc871c..43a9076d68 100755 --- a/plugins/bc-mail/src/View/Helper/MailHelper.php +++ b/plugins/bc-mail/src/View/Helper/MailHelper.php @@ -211,6 +211,88 @@ public function descriptionExists() return true; } + /** + * メールフォームの送信完了文を取得する + * @return string メールフォームの送信完了文 + * @checked + * @noTodo + * @unitTest + */ + public function getThanks(): string + { + return $this->currentMailContent->thanks; + } + + /** + * メールの送信完了文を出力する + * + * @return void + * @checked + * @noTodo + * @unitTest ラッパーのためテスト不要 + */ + public function thanks(): void + { + echo $this->getThanks(); + } + + /** + * メールの送信完了文が設定されているかどうかを判定する + * + * @return bool 設定されている場合 true を返す + * @checked + * @noTodo + * @unitTest + */ + public function thanksExists(): bool + { + if (empty($this->currentMailContent->thanks)) { + return false; + } + return true; + } + + /** + * メールフォームの受付停止文を取得する + * @return string メールフォームの受付停止文 + * @checked + * @noTodo + * @unitTest + */ + public function getUnpublish(): string + { + return $this->currentMailContent->unpublish; + } + + /** + * メールの受付停止文を出力する + * + * @return void + * @checked + * @noTodo + * @unitTest ラッパーのためテスト不要 + */ + public function unpublish(): void + { + echo $this->getUnpublish(); + } + + /** + * メールの受付停止文が設定されているかどうかを判定する + * + * @return bool 設定されている場合 true を返す + * @checked + * @noTodo + * @unitTest + */ + public function unpublishExists(): bool + { + if (empty($this->currentMailContent->unpublish)) { + return false; + } + return true; + } + /** * メールフォームへのリンクを生成する * $contentsNameはコンテンツ管理上の1階層のみ対応 diff --git a/plugins/bc-mail/tests/Scenario/MailContentsScenario.php b/plugins/bc-mail/tests/Scenario/MailContentsScenario.php index f07ee65e87..91830e4e97 100644 --- a/plugins/bc-mail/tests/Scenario/MailContentsScenario.php +++ b/plugins/bc-mail/tests/Scenario/MailContentsScenario.php @@ -54,6 +54,8 @@ public function load(...$args): mixed MailContentFactory::make([ 'id' => 1, 'description' => 'description test', + 'thanks' => 'thanks test', + 'unpublish' => 'unpublish test', 'sender_name' => 'baserCMSサンプル', 'subject_user' => '【baserCMS】お問い合わせ頂きありがとうございます。', 'subject_admin' => '【baserCMS】お問い合わせを受け付けました', @@ -80,6 +82,8 @@ public function load(...$args): mixed MailContentFactory::make([ 'description' => 'description test 2', + 'thanks' => 'thanks test 2', + 'unpublish' => 'unpublish test 2', 'sender_name' => '送信先名を入力してください', 'subject_user' => 'お問い合わせ頂きありがとうございます', 'subject_admin' => 'お問い合わせを頂きました', diff --git a/plugins/bc-mail/tests/TestCase/Controller/Api/Admin/MailContentsControllerTest.php b/plugins/bc-mail/tests/TestCase/Controller/Api/Admin/MailContentsControllerTest.php index 47d9aa4bec..ef194e091d 100644 --- a/plugins/bc-mail/tests/TestCase/Controller/Api/Admin/MailContentsControllerTest.php +++ b/plugins/bc-mail/tests/TestCase/Controller/Api/Admin/MailContentsControllerTest.php @@ -70,6 +70,8 @@ public function testView() // 戻る値を確認 $result = json_decode((string)$this->_response->getBody()); $this->assertEquals('description test', $result->mailContent->description); + $this->assertEquals('thanks test', $result->mailContent->thanks); + $this->assertEquals('unpublish test', $result->mailContent->unpublish); $this->assertEquals('baserCMSサンプル', $result->mailContent->sender_name); $this->assertEquals('【baserCMS】お問い合わせ頂きありがとうございます。', $result->mailContent->subject_user); } diff --git a/plugins/bc-mail/tests/TestCase/Model/Table/MailContentsTableTest.php b/plugins/bc-mail/tests/TestCase/Model/Table/MailContentsTableTest.php index 4674781d25..81bd938986 100755 --- a/plugins/bc-mail/tests/TestCase/Model/Table/MailContentsTableTest.php +++ b/plugins/bc-mail/tests/TestCase/Model/Table/MailContentsTableTest.php @@ -13,16 +13,15 @@ use BaserCore\TestSuite\BcTestCase; use BaserCore\Utility\BcContainerTrait; -use BcMail\Model\Entity\MailContent; +use BcMail\Model\Table\MailContentsTable; use BcMail\Service\MailContentsServiceInterface; use BcMail\Test\Scenario\MailContentsScenario; -use Cake\Core\Configure; use CakephpFixtureFactories\Scenario\ScenarioAwareTrait; /** * Class MailContentTest * - * @property MailContent $MailContent + * @property MailContentsTable $MailContent */ class MailContentsTableTest extends BcTestCase { @@ -434,6 +433,10 @@ public function testValidationDefault() //containsScript $errors = $validator->validate(['description' => '']); $this->assertEquals('説明文でスクリプトの入力は許可されていません。', current($errors['description'])); + $errors = $validator->validate(['thanks' => '']); + $this->assertEquals('送信完了文でスクリプトの入力は許可されていません。', current($errors['thanks'])); + $errors = $validator->validate(['unpublish' => '']); + $this->assertEquals('受付中止文でスクリプトの入力は許可されていません。', current($errors['unpublish'])); //emails $errors = $validator->validate(['sender_1' => 'カタカナ', 'sender_2' => 'カタカナ']); diff --git a/plugins/bc-mail/tests/TestCase/View/Helper/BcMailBaserHelperTest.php b/plugins/bc-mail/tests/TestCase/View/Helper/BcMailBaserHelperTest.php index 6b67f2c921..d4522521b9 100644 --- a/plugins/bc-mail/tests/TestCase/View/Helper/BcMailBaserHelperTest.php +++ b/plugins/bc-mail/tests/TestCase/View/Helper/BcMailBaserHelperTest.php @@ -37,6 +37,10 @@ public function testMethods() $this->assertEquals(['Mail', 'isMail'], $methods['isMail']); $this->assertEquals(['Mail', 'descriptionExists'], $methods['mailFormDescriptionExists']); $this->assertEquals(['Mail', 'description'], $methods['mailFormDescription']); + $this->assertEquals(['Mail', 'thanksExists'], $methods['mailFormThanksExists']); + $this->assertEquals(['Mail', 'thanks'], $methods['mailFormThanks']); + $this->assertEquals(['Mail', 'unpublishExists'], $methods['mailFormUnpublishExists']); + $this->assertEquals(['Mail', 'unpublish'], $methods['mailFormUnpublish']); $this->assertEquals(['Mailform', 'freeze'], $methods['freezeMailForm']); $this->assertEquals(['Mailform', 'create'], $methods['createMailForm']); $this->assertEquals(['Mailform', 'hidden'], $methods['mailFormHidden']); @@ -51,4 +55,4 @@ public function testMethods() $this->assertEquals(['Mailform', 'isGroupLastField'], $methods['isMailFormGroupLastField']); $this->assertEquals(['Mailform', 'label'], $methods['mailFormLabel']); } -} \ No newline at end of file +} diff --git a/plugins/bc-mail/tests/TestCase/View/Helper/MailHelperTest.php b/plugins/bc-mail/tests/TestCase/View/Helper/MailHelperTest.php index 0779e58e28..1fb67a18f8 100644 --- a/plugins/bc-mail/tests/TestCase/View/Helper/MailHelperTest.php +++ b/plugins/bc-mail/tests/TestCase/View/Helper/MailHelperTest.php @@ -103,6 +103,90 @@ public static function descriptionExistsProvider() ]; } + /** + * 送信完了文を取得する + */ + public function testGetThanks() + { + $this->MailHelper->currentMailContent = new Entity(['thanks' => 'ありがとうございました。']); + $result = $this->MailHelper->getThanks(); + $this->assertEquals($result, 'ありがとうございました。'); + } + + /** + * 送信完了文の存在確認 + * @param $thanks + * @param $expected + * @dataProvider ThanksExistsProvider + */ + public function testThanksExists($thanks, $expected) + { + //setUp + $mailContent = new Entity([ + 'thanks' => $thanks + ]); + $this->MailHelper->currentMailContent = $mailContent; + + $result = $this->MailHelper->thanksExists(); + + $this->assertEquals($expected, $result); + } + + + public static function thanksExistsProvider() + { + return [ + ['This is a test thanks', true], + ['', false], + [null, false], + ['0', false], + [' ', true], + ['

This is a HTML thanks

', true], + ]; + } + + /** + * 受付中止文を取得する + */ + public function testGetUnpublish() + { + $this->MailHelper->currentMailContent = new Entity(['unpublish' => '受付中止です。']); + $result = $this->MailHelper->getUnpublish(); + $this->assertEquals($result, '受付中止です。'); + } + + /** + * 受付中止文の存在確認 + * @param $unpublish + * @param $expected + * @dataProvider ThanksExistsProvider + */ + public function testUnpublishExists($unpublish, $expected) + { + //setUp + $mailContent = new Entity([ + 'unpublish' => $unpublish + ]); + $this->MailHelper->currentMailContent = $mailContent; + + $result = $this->MailHelper->unpublishExists(); + + $this->assertEquals($expected, $result); + } + + + public static function unpublishExistsProvider() + { + return [ + ['This is a test unpublish', true], + ['', false], + [null, false], + ['0', false], + [' ', true], + ['

This is a HTML unpublish

', true], + ]; + } + /** * メールフォームを取得 */ @@ -236,6 +320,74 @@ public function test_getDescription() $this->assertEquals('test description', $rs); } + /** + * test thanksExists + */ + public function test_thanksExists() + { + $mailContent = new MailContent(); + $mailContent->thanks = 'test thanks'; + + //with thanks + $this->MailHelper->currentMailContent = $mailContent; + $rs = $this->MailHelper->thanksExists(); + $this->assertTrue($rs); + + //with empty thanks + $mailContent->thanks = ''; + $this->MailHelper->currentMailContent = $mailContent; + $rs = $this->MailHelper->thanksExists(); + $this->assertFalse($rs); + } + + /** + * test testGetThanks + */ + public function test_getThanks() + { + $mailContent = new MailContent(); + $mailContent->thanks = 'test thanks'; + + $this->MailHelper->currentMailContent = $mailContent; + + $rs = $this->MailHelper->getThanks(); + $this->assertEquals('test thanks', $rs); + } + + /** + * test unpublishExists + */ + public function test_unpublishExists() + { + $mailContent = new MailContent(); + $mailContent->unpublish = 'test unpublish'; + + //with unpublish + $this->MailHelper->currentMailContent = $mailContent; + $rs = $this->MailHelper->unpublishExists(); + $this->assertTrue($rs); + + //with empty unpublish + $mailContent->unpublish = ''; + $this->MailHelper->currentMailContent = $mailContent; + $rs = $this->MailHelper->unpublishExists(); + $this->assertFalse($rs); + } + + /** + * test testGetUnpublish + */ + public function test_getUnpublish() + { + $mailContent = new MailContent(); + $mailContent->unpublish = 'test unpublish'; + + $this->MailHelper->currentMailContent = $mailContent; + + $rs = $this->MailHelper->getUnpublish(); + $this->assertEquals('test unpublish', $rs); + } + /** * test isMail */