понедельник, 22 июня 2015 г.

vTiger SalesPlatform 6.2 - Разные SMTP серверы для разных пользователей

В этом посте я расскажу как сделать так, чтоб в vTiger 6 были разные настройки SMTP для всех пользователей. Важно: уже в настройках должен быть прописан и работать какой-нибудь действующий SMTP сервер. Предполагается, что все используют один SMTP сервер, но под разными аккаунтами.
  1. Добавляем новое поле в таблицу пользователя.
  2. ALTER TABLE `vtiger_users` ADD `smtppass` TEXT NULL DEFAULT NULL COMMENT 'SMTP Password' AFTER `is_owner`;
  3. Добавляем новое поле в настройки.
    INSERT INTO `vtiger_field` (`tabid`, `fieldid`, `columnname`, `tablename`, `generatedtype`, `uitype`, `fieldname`, `fieldlabel`, `readonly`, `presence`, `defaultvalue`, `maximumlength`, `sequence`, `block`, `displaytype`, `typeofdata`, `quickcreate`, `quickcreatesequence`, `info_type`, `masseditable`, `helpinfo`, `summaryfield`) VALUES (29, 884, 'smtppass', 'vtiger_users', 1, '55', 'smtppass', 'SMTP Password', 1, 2, 'password', 100, 32, 77, 1, 'V~O', 1, NULL, 'BAS', 1, NULL, 0);
    где вместо 884 ставим правильный ID поля (сортируем все поля по fieldid и ставим на один больше)
  4. В таблице vtiger_modulerel ставим цифру такую же как максимальный fieldid (в нашем случае это 884)
  5. Открываем Modules/Emails/models/Record.php. Ищем функцию send() и дополняем:
    в начале функции ставим:
    global $current_user;
    Далее в той же функции ищем:
    if($server_username != '') {
    $server_username = $idn->encode($server_username);
    $mailer->Username = $server_username;
    }

    Закомментируем его. И рядом ставим:
    // JACK Begin
    $newlogin = str_replace("@gmail.com", "", $current_user->email1);
    $mailer->Username = $newlogin;
    $mailer->Password = $current_user->smtppass;
    // JACK End

Пробовал на SalesPlatform на vTiger 6.2 - работало, притом часть аккаунтов email была на GMail, а часть на Google Apps.