This is an old revision of the document!


Store mailscanner attachments only once

If you use the mailscanner in vtigercrm 6 you probably recognized every mail attachment is stored multiple times in documents.
This isn't necessary.

To modify this, please apply the following modification

File: /modules/Settings/MailConverter/handlers/MailScannerAction.php

Search

var $STORAGE_FOLDER = 'storage/mailscanner/';

Insert after

private $_notesId = array();

Search

function __CreateTicket($mailscanner, $mailrecord) {

Insert after

$this->_notesId = array();

Search

// Create document record
$document = new Documents();
$document->column_fields['notes_title']         = $filename;
$document->column_fields['filename']         = $filename;
$document->column_fields['filesize']         = mb_strlen($filecontent, '8bit');
$document->column_fields['filestatus']         = 1;
$document->column_fields['filelocationtype'] = 'I';
$document->column_fields['folderid']         = 1; // Default Folder
$document->column_fields['assigned_user_id'] = $userid;
$document->save('Documents');

replace these lines with

if(!isset($this->_notesId[$filename])) {
    // Create document record
    $document = new Documents();
    $document->column_fields['notes_title']         = $filename;
    $document->column_fields['filename']         = $filename;
    $document->column_fields['filesize']         = mb_strlen($filecontent, '8bit');
    $document->column_fields['filestatus']         = 1;
    $document->column_fields['filelocationtype'] = 'I';
    $document->column_fields['folderid']         = 1; // Default Folder
    $document->column_fields['assigned_user_id'] = $userid;
    $document->save('Documents');
 
    $this->_notesId[$filename] = $document->id;
} else {
    $document = CRMEntity::getInstance('Documents');
    $document->retrieve_entity_info($this->_notesId, 'Documents');
    $document->id = $this->_notesId[$filename];
}