EC-CUBE3サイト管理者による新規会員登録時の自動メール送信カスタマイズ

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() {}
の中身を以下の記述へ書き換えます。

$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マニュアルサイト
管理者による新規会員登録