public void buildAndSaveCustomerForgottenPasswordMail(final RequestData requestData, final Customer customer, final CustomerCredential customerCredential, final ForgottenPasswordForm forgottenPasswordForm) throws Exception {
final MarketArea marketArea = requestData.getMarketArea();
final Locale locale = requestData.getLocale();
final String contextNameValue = requestData.getContextNameValue();
final CustomerForgottenPasswordEmailBean customerForgottenPasswordEmailBean = new CustomerForgottenPasswordEmailBean();
BeanUtils.copyProperties(forgottenPasswordForm, customerForgottenPasswordEmailBean);
customerForgottenPasswordEmailBean.setFromAddress(marketArea.getEmailFromAddress(contextNameValue, Email.EMAIl_TYPE_FORGOTTEN_PASSWORD));
customerForgottenPasswordEmailBean.setFromName(marketArea.getEmailFromName(contextNameValue, Email.EMAIl_TYPE_FORGOTTEN_PASSWORD));
customerForgottenPasswordEmailBean.setReplyToEmail(marketArea.getEmailFromAddress(contextNameValue, Email.EMAIl_TYPE_FORGOTTEN_PASSWORD));
customerForgottenPasswordEmailBean.setToEmail(customer.getEmail());
customerForgottenPasswordEmailBean.setToken(customerCredential.getResetToken());
customerForgottenPasswordEmailBean.setTitle(referentialDataService.getTitleByLocale(customer.getTitle(), locale));
customerForgottenPasswordEmailBean.setFirstname(customer.getFirstname());
customerForgottenPasswordEmailBean.setLastname(customer.getLastname());
customerForgottenPasswordEmailBean.setEmail(customer.getEmail());
buildAndSaveCustomerForgottenPasswordMail(requestData, customer, customerCredential, customerForgottenPasswordEmailBean);
}