[Vtigercrm-developers] Individual Email Outgoing Server settings (solution)

mail at dvoges.de mail at dvoges.de
Wed Nov 21 05:57:14 PST 2012


Hello Community,

I solved the problem, that emails out of vtiger are send by one common  
email account. With this solution it is possible to provide every user  
an individual smtp account.

1) Changes in the DB (setting and values)

Table: ?vtiger_systems? New Column: "user" with varchar(63) => here is  
the user name of the email sender which should match with  
?vtiger_users?->?user_name?.
As ?vtiger_systems?->?Server_Type? I use the value ?usermail?.
The rest fields are filled with the individual outgoing mail server  
account data.
Please pay attention to ?vtiger_systems_seq? and set the increases  
index value of ?vtiger_systems?.

There is no GUI for register new entries, it has to be done manually by sql.
(Question: There is a field ?vtiger_systems?->?server_path? which is  
not shown or editable in the vtiger gui, but it is necessary for our  
email provider, is this a bug?)


2) Changes in the code

I replaced the function ?getFromEmailAddress? in the file  
"\modules\MailManager\src\models\Draft.php" with

##############################################
function getFromEmailAddress() {
    global $adb, $current_user;
    $fromEmail = false;
    if (Vtiger_Version::check('5.2.0', '>=')) {
       $smtpFromResult = $adb->pquery('SELECT from_email_field FROM  
vtiger_systems WHERE server_type=? and  
user="'.$current_user->column_fields['user_name'].'"',  
array('usermail'));
       if ($adb->num_rows($smtpFromResult)) {
          $fromEmail = decode_html($adb->query_result($smtpFromResult,  
0, 'from_email_field'));
       }
       else {
          $smtpFromResult = $adb->pquery('SELECT from_email_field FROM  
vtiger_systems WHERE server_type=?', array('email'));
          if ($adb->num_rows($smtpFromResult)) {
             $fromEmail =  
decode_html($adb->query_result($smtpFromResult, 0, 'from_email_field'));
          }
       }
    }
    if (empty($fromEmail)) $fromEmail = $current_user->column_fields['email1'];
    return $fromEmail;
}
##############################################

The function at first tries to find an individual email by ?usermail?  
and ?user->name?, if this has no result it uses the old method by  
searching the ?mail? ? Data.


I would like to hear some feedback. Questions are also welcome.

Best wishes from Munich, Germany

Detlef Voges







More information about the vtigercrm-developers mailing list