34 'customer/account_information/change_email_and_password_template';
69 private $customerRegistry;
74 private $storeManager;
79 private $transportBuilder;
99 private $senderResolver;
121 $this->transportBuilder = $transportBuilder;
124 $this->scopeConfig = $scopeConfig;
139 $isPasswordChanged =
false 141 if ($origCustomerEmail != $savedCustomer->
getEmail()) {
142 if ($isPasswordChanged) {
143 $this->emailAndPasswordChanged($savedCustomer, $origCustomerEmail);
144 $this->emailAndPasswordChanged($savedCustomer, $savedCustomer->
getEmail());
148 $this->emailChanged($savedCustomer, $origCustomerEmail);
149 $this->emailChanged($savedCustomer, $savedCustomer->
getEmail());
153 if ($isPasswordChanged) {
154 $this->passwordReset($savedCustomer);
172 $customerEmailData = $this->getFullCustomerObject(
$customer);
174 $this->sendEmailTemplate(
176 self::XML_PATH_CHANGE_EMAIL_AND_PASSWORD_TEMPLATE,
177 self::XML_PATH_FORGOT_EMAIL_IDENTITY,
178 [
'customer' => $customerEmailData,
'store' => $this->storeManager->getStore(
$storeId)],
198 $customerEmailData = $this->getFullCustomerObject(
$customer);
200 $this->sendEmailTemplate(
202 self::XML_PATH_CHANGE_EMAIL_TEMPLATE,
203 self::XML_PATH_FORGOT_EMAIL_IDENTITY,
204 [
'customer' => $customerEmailData,
'store' => $this->storeManager->getStore(
$storeId)],
216 private function passwordReset(CustomerInterface
$customer)
223 $customerEmailData = $this->getFullCustomerObject(
$customer);
225 $this->sendEmailTemplate(
227 self::XML_PATH_RESET_PASSWORD_TEMPLATE,
228 self::XML_PATH_FORGOT_EMAIL_IDENTITY,
229 [
'customer' => $customerEmailData,
'store' => $this->storeManager->getStore(
$storeId)],
246 private function sendEmailTemplate(
250 $templateParams = [],
260 $from = $this->senderResolver->resolve(
261 $this->scopeConfig->getValue($sender,
'store',
$storeId),
265 $transport = $this->transportBuilder->setTemplateIdentifier(
$templateId)
266 ->setTemplateOptions([
'area' =>
'frontend',
'store' =>
$storeId])
267 ->setTemplateVars($templateParams)
272 $transport->sendMessage();
281 private function getFullCustomerObject(
$customer)
285 $mergedCustomerData = $this->customerRegistry->retrieveSecureData(
$customer->getId());
287 ->buildOutputDataArray(
$customer, \
Magento\Customer\Api\Data\CustomerInterface::class);
289 $mergedCustomerData->setData(
'name', $this->customerViewHelper->getCustomerName(
$customer));
290 return $mergedCustomerData;
300 private function getWebsiteStoreId(
$customer, $defaultStoreId =
null)
302 if (
$customer->getWebsiteId() != 0 && empty($defaultStoreId)) {
303 $storeIds = $this->storeManager->getWebsite(
$customer->getWebsiteId())->getStoreIds();
304 $defaultStoreId = reset($storeIds);
306 return $defaultStoreId;
322 $customerEmailData = $this->getFullCustomerObject(
$customer);
324 $this->sendEmailTemplate(
326 self::XML_PATH_REMIND_EMAIL_TEMPLATE,
327 self::XML_PATH_FORGOT_EMAIL_IDENTITY,
328 [
'customer' => $customerEmailData,
'store' => $this->storeManager->getStore(
$storeId)],
341 $storeId = $this->storeManager->getStore()->getId();
346 $customerEmailData = $this->getFullCustomerObject(
$customer);
348 $this->sendEmailTemplate(
350 self::XML_PATH_FORGOT_EMAIL_TEMPLATE,
351 self::XML_PATH_FORGOT_EMAIL_IDENTITY,
352 [
'customer' => $customerEmailData,
'store' => $this->storeManager->getStore(
$storeId)],
370 $type = self::NEW_ACCOUNT_EMAIL_REGISTERED,
373 $sendemailStoreId =
null 377 if (!isset($types[
$type])) {
379 __(
'The transactional account email type is incorrect. Verify and try again.')
389 $customerEmailData = $this->getFullCustomerObject(
$customer);
391 $this->sendEmailTemplate(
394 self::XML_PATH_REGISTER_EMAIL_IDENTITY,
395 [
'customer' => $customerEmailData,
'back_url' => $backUrl,
'store' =>
$store],
const XML_PATH_CHANGE_EMAIL_AND_PASSWORD_TEMPLATE
const XML_PATH_FORGOT_EMAIL_IDENTITY
const XML_PATH_CONFIRM_EMAIL_TEMPLATE
const XML_PATH_REGISTER_NO_PASSWORD_EMAIL_TEMPLATE
credentialsChanged(CustomerInterface $savedCustomer, $origCustomerEmail, $isPasswordChanged=false)
const XML_PATH_REMIND_EMAIL_TEMPLATE
passwordResetConfirmation(CustomerInterface $customer)
passwordReminder(CustomerInterface $customer)
const XML_PATH_CHANGE_EMAIL_TEMPLATE
const XML_PATH_CONFIRMED_EMAIL_TEMPLATE
const XML_PATH_RESET_PASSWORD_TEMPLATE
__construct(CustomerRegistry $customerRegistry, StoreManagerInterface $storeManager, TransportBuilder $transportBuilder, CustomerViewHelper $customerViewHelper, DataObjectProcessor $dataProcessor, ScopeConfigInterface $scopeConfig, SenderResolverInterface $senderResolver=null)
const XML_PATH_REGISTER_EMAIL_TEMPLATE
const XML_PATH_REGISTER_EMAIL_IDENTITY
const XML_PATH_FORGOT_EMAIL_TEMPLATE
newAccount(CustomerInterface $customer, $type=self::NEW_ACCOUNT_EMAIL_REGISTERED, $backUrl='', $storeId=0, $sendemailStoreId=null)