EC-CUBE3で、ユーザーが新規会員登録をした際は、システムから会員登録の自動返信で会員登録の案内メールが送信されますが、管理者が管理画面から新規会員登録をした場合は、登録した会員のメールアドレス宛には自動で案内メールは送信されません。
デフォルトでは、管理屋が登録した会員IDを連絡して、ユーザーにはパスワードの再発行などの操作を行って頂く必要がありますが、管理者が新規会員登録をした時点で、自動的に会員登録案内メールを送信するには、下記のようなカスタマイズを行う事で実現出来るようになります。
管理画面の新規会員登録にて自動メール送信を行う場合は、以下の改修が必要となります。
※下記カスタマイズはEC-CUBE3がデフォルト状態の場合です。他のカスタマイズやプラグイン等が入っていた場合は、状況に応じてカスタマイズ内容を検討、対応いただく必要があります。
1.登録完了メールのテンプレートファイルを管理画面用テンプレートディレクトリへコピー
/src/Eccube/Resource/template/default/Mail/entry_complete.twig
↓
コピー
↓
/src/Eccube/Resource/template/admin/Mail/entry_complete.twig
2.管理画面>会員登録時の処理にメール送信ロジックを追加
/src/Eccube/Controller/Admin/Customer/CustomerEditController.php
の
public function index() {}
の中身を以下の記述へ書き換えます。
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
$app['orm.em']->getFilters()->enable('incomplete_order_status_hidden'); // 編集 if ($id) { $Customer = $app['orm.em'] ->getRepository('Eccube\Entity\Customer') ->find($id); if (is_null($Customer)) { throw new NotFoundHttpException(); } // 編集用にデフォルトパスワードをセット $previous_password = $Customer->getPassword(); $Customer->setPassword($app['config']['default_password']); // 新規登録 } else { $Customer = $app['eccube.repository.customer']->newCustomer(); $CustomerAddress = new \Eccube\Entity\CustomerAddress(); $Customer->setBuyTimes(0); $Customer->setBuyTotal(0); } // 会員登録フォーム $builder = $app['form.factory'] ->createBuilder('admin_customer', $Customer); $event = new EventArgs( array( 'builder' => $builder, 'Customer' => $Customer, ), $request ); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_CUSTOMER_EDIT_INDEX_INITIALIZE, $event); $form = $builder->getForm(); if ('POST' === $request->getMethod()) { $form->handleRequest($request); if ($form->isValid()) { log_info('会員登録開始', array($Customer->getId())); //新規登録か判定 $isNewFlg = false; if ($Customer->getId() === null) { $Customer->setSalt( $app['eccube.repository.customer']->createSalt(5) ); $Customer->setSecretKey( $app['eccube.repository.customer']->getUniqueSecretKey($app) ); $CustomerAddress->setName01($Customer->getName01()) ->setName02($Customer->getName02()) ->setKana01($Customer->getKana01()) ->setKana02($Customer->getKana02()) ->setCompanyName($Customer->getCompanyName()) ->setZip01($Customer->getZip01()) ->setZip02($Customer->getZip02()) ->setZipcode($Customer->getZip01() . $Customer->getZip02()) ->setPref($Customer->getPref()) ->setAddr01($Customer->getAddr01()) ->setAddr02($Customer->getAddr02()) ->setTel01($Customer->getTel01()) ->setTel02($Customer->getTel02()) ->setTel03($Customer->getTel03()) ->setFax01($Customer->getFax01()) ->setFax02($Customer->getFax02()) ->setFax03($Customer->getFax03()) ->setDelFlg(Constant::DISABLED) ->setCustomer($Customer); $app['orm.em']->persist($CustomerAddress); $isNewFlg = true; } if ($Customer->getPassword() === $app['config']['default_password']) { $Customer->setPassword($previous_password); } else { if ($Customer->getSalt() === null) { $Customer->setSalt($app['eccube.repository.customer']->createSalt(5)); } $Customer->setPassword( $app['eccube.repository.customer']->encryptPassword($app, $Customer) ); } $app['orm.em']->persist($Customer); $app['orm.em']->flush(); log_info('会員登録完了', array($Customer->getId())); //新規会員登録時は登録完了メールを送信する if ($isNewFlg) { $activateUrl = $app->url('entry_activate', array('secret_key' => $Customer->getSecretKey())); /** @var $BaseInfo \Eccube\Entity\BaseInfo */ $BaseInfo = $app['eccube.repository.base_info']->get(); $activateFlg = $BaseInfo->getOptionCustomerActivate(); // 確認メールを送信し完了画面表示. if ($Customer->getStatus() == '仮会員') { // 仮会員登録メール送信 $app['eccube.service.mail']->sendCustomerConfirmMail($Customer, $activateUrl); } else { // 会員登録完了メール送信 $app['eccube.service.mail']->sendCustomerCompleteMail($Customer); } } $event = new EventArgs( array( 'form' => $form, 'Customer' => $Customer, ), $request ); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_CUSTOMER_EDIT_INDEX_COMPLETE, $event); $app->addSuccess('admin.customer.save.complete', 'admin'); return $app->redirect($app->url('admin_customer_edit', array( 'id' => $Customer->getId(), ))); } else { $app->addError('admin.customer.save.failed', 'admin'); } } return $app->render('Customer/edit.twig', array( 'form' => $form->createView(), 'Customer' => $Customer, )); |
以上で、管理者が管理画面から新規会員登録をした際に、登録したアドレス宛に自動的に会員登録の案内メールが送信されるようになります。
是非お試し下さい。
(ご参考)
EC-CUBE3マニュアルサイト
●管理者による新規会員登録