2012-04-30 5 views
0

Я искал всюду и не могу найти ответ на мою проблему. Я хочу отключить учетную запись пользователя при регистрации и затем активировать ее в BackOffice. Мне удалось это сделать, но я хочу, чтобы отправить пользователю по электронной почте, когда его учетная запись будет активирована, так что я добавил кнопку рядом активировать кнопку/unactivate радио, я добавил следующее в AdminCustomers.phpPrestashop: не удается отправить электронное письмо пользователю после активации учетной записи из BackOffice

<input type="submit" value="'.$this->l(' Send Email to inform user ').'"/> 

Но я не умеете отправлять электронную почту. Мой вопрос может показаться вам очень простым, но я новичок в php/html, поэтому для меня это немного сложно. Я искал и нашел много примеров для отправки электронной почты, но ни один из них, похоже, не работает.

EDIT: Причина, по которой я делаю это, состоит в том, что у нас есть два типа клиентов: физические лица и компании. А для компаний нам необходимо проверить предоставленную информацию (например, номер НДС). А затем активируйте учетную запись, потому что она дает им доступ к специальным ценам.

ответ

0

Я в конечном итоге создавая модуль для этого. Он отлично работает с Prestashop 1.5.

0

Где вы активируете аккаунт? Вы должны просто добавить код для отправки электронной почты после активации учетной записи - кажется, нет смысла добавлять дополнительный шаг (который администратор может забыть взять).

В модуле я хотел бы использовать что-то вроде следующего:

private function _emailNewAccount($customer, $address, $messages) 
    { 
    $configuration = Configuration::getMultiple(array('PS_LANG_DEFAULT', 'PS_SHOP_EMAIL', 'PS_SHOP_NAME')); 
    $id_lang = (int)$configuration['PS_LANG_DEFAULT']; 
    $template = 'new_account'; 
$subject = $this->l('New Account', $id_lang); 
    $templateVars = array(
     '{firstname}' => $customer->firstname, 
     '{lastname}' => $customer->lastname, 
     '{address1}' => $address->address1, 
     '{address2}' => !empty($address->address2) ? $address->address2 : $this->l('--',  $id_lang), 
     '{city}' => $address->city, 
     '{postcode}' => $address->postcode, 
     '{email}' => $customer->email, 
     '{messages}' => is_array($messages) ? implode("\n", $messages) : (isset($messages) ? $messages : ''), 
     '{phone}' => !empty($address->phone) ? $address->phone : $this->l('n/a', $id_lang), 
     '{mobile}' => !empty($address->phone_mobile) ? $address->phone_mobile : $this->l('n/a', $id_lang), 
     '{customer_id}' => (int)$customer->id 
    ); 
    $iso = Language::getIsoById((int)($id_lang)); 
    if (file_exists(dirname(__FILE__).'/mails/'.$iso.'/'.$template.'.txt') AND file_exists(dirname(__FILE__).'/mails/'.$iso.'/'.$template.'.html')) 
     Mail::Send($id_lang, $template, $subject, $templateVars, $customer->email,$customer->firstname.' '.$customer->lastname, $configuration['PS_SHOP_EMAIL'], $configuration['PS_SHOP_NAME'], NULL, NULL, dirname(__FILE__).'/mails/'); 
} 

Очевидно, что вы также должны создать соответствующие текстовые и HTML электронной почты шаблонов. Это было бы в моем модуле dorectory в этом случае: /modules/mymodulename/mails/en/new_account.html /modules/mymodulename/mails/en/new_account.txt

Вы используете поля, определенные выше в шаблоне , поэтому для текстового только шаблон, который может иметь в new_account.txt:

Hi {firstname} {lastname}, 

You have just registered on {shop_name}. 

Address: 

{address1} 
{address2} 
{city}, {postcode} 
Telephone: {phone}, Mobile: {mobile} 

{messages} 

Это может быть хорошо, если вы включите в свой вопрос, что вы пытались до сих пор ....

+0

Спасибо за ответ :). Фактически причина, по которой я делаю это, состоит в том, что у нас есть два типа клиентов: отдельные лица и компании. А для компаний нам необходимо проверить предоставленную информацию (например, номер НДС). А затем активируйте учетную запись, чтобы она давала им доступ к специальным ценам. – Anila