The Problem is caused by the Method: Mage_Paypal_Model_Express_Checkout::_involveNewCustomer() in line 1045 and 1051. It do not pass any store parameter:
protected function _involveNewCustomer()
{
$customer = $this->_quote->getCustomer();
if ($customer->isConfirmationRequired()) {
$customer->sendNewAccountEmail('confirmation');
$url = Mage::helper('customer')->getEmailConfirmationUrl($customer->getEmail());
$this->getCustomerSession()->addSuccess(
Mage::helper('customer')->__('Account confirmation is required. Please, check your e-mail for confirmation link. To resend confirmation email please <a href="%s">click here</a>.', $url)
);
} else {
$customer->sendNewAccountEmail();
$this->getCustomerSession()->loginById($customer->getId());
}
return $this;
}
That causes the call $this->_getWebsiteStoreId(null)
in Mage_Customer_Model_Customer::sendNewAccountEmail() in line 603:
public function sendNewAccountEmail($type = 'registered', $backUrl = '', $storeId = '0')
{
$types = array(
'registered' => self::XML_PATH_REGISTER_EMAIL_TEMPLATE, // welcome email, when confirmation is disabled
'confirmed' => self::XML_PATH_CONFIRMED_EMAIL_TEMPLATE, // welcome email, when confirmation is enabled
'confirmation' => self::XML_PATH_CONFIRM_EMAIL_TEMPLATE, // email with confirmation link
);
if (!isset($types[$type])) {
Mage::throwException(Mage::helper('customer')->__('Wrong transactional account email type'));
}
if (!$storeId) {
$storeId = $this->_getWebsiteStoreId($this->getSendemailStoreId());
}
$this->_sendEmailTemplate($types[$type], self::XML_PATH_REGISTER_EMAIL_IDENTITY,
array('customer' => $this, 'back_url' => $backUrl), $storeId);
return $this;
}
Which leads to choosing the first store of the current website in:
protected function _getWebsiteStoreId($defaultStoreId = null)
{
if ($this->getWebsiteId() != 0 && empty($defaultStoreId)) {
$storeIds = Mage::app()->getWebsite($this->getWebsiteId())->getStoreIds();
reset($storeIds);
$defaultStoreId = current($storeIds);
}
return $defaultStoreId;
}
You need to rewrite the method Mage_Paypal_Model_Express_Checkout::_involveNewCustomer() and pass the current store ID:
protected function _involveNewCustomer()
{
$customer = $this->_quote->getCustomer();
if ($customer->isConfirmationRequired()) {
$customer->sendNewAccountEmail('confirmation', '', Mage::app()->getStore()->getId());
$url = Mage::helper('customer')->getEmailConfirmationUrl($customer->getEmail());
$this->getCustomerSession()->addSuccess(
Mage::helper('customer')->__('Account confirmation is required. Please, check your e-mail for confirmation link. To resend confirmation email please <a href="%s">click here</a>.', $url)
);
} else {
$customer->sendNewAccountEmail('registered', '', Mage::app()->getStore()->getId());
$this->getCustomerSession()->loginById($customer->getId());
}
return $this;
}