Search code examples
cakephpimap

check email with CakePHP IMAP Custom Datasource


I want to use my email on my server with CakePHP IMAP Custom Datasource.

In database.php I have:-

public $myCustomEmail = array(
    'datasource' => 'ImapSource',
    'server' => 'test.com',
    'username' => '[email protected]',
    'password' => 'email password',
    'port' => 143,
    'ssl' => true,
    'encoding' => 'UTF-8',
    'error_handler' => 'php',
    'auto_mark_as' => array(
        'Seen',
        // 'Answered',
        // 'Flagged',
        // 'Deleted',
        // 'Draft',
    ),
);

When I set port to 143 or ssl to true I get this error:-

Error: Unable to get imap_thread after 4 retries. 'TLS/SSL failure for radindesign.com: SSL negotiation failed'

When ssl is set to false or I change the port I get this error:-

Unable to get imap_thread after 4 retries. 'Certificate failure for test.com: self signed certificate: /CN=linux10.centraldnserver.com/[email protected]'

What's wrong with the IMAP authentication?


Solution

  • CakePHP IMAP Custom Datasource didnt help me i use from this :

    // Configure your imap mailboxes
    $mailboxes = array(
    array(
        'label'     => 'Gmail',
        'mailbox'   => '{imap.gmail.com:993/imap/ssl}INBOX',
        'username'  => '[email protected]',
        'password'  => 'yourpassword'
    ),
    array(
        'label'     => 'My Cpanel website',
        'mailbox'   => '{mail.yourdomain.com:143/notls}INBOX',
        'username'  => 'info+yourdomain.com',
        'password'  => 'yourpassword'
    ),
    array(
        'label'     => 'Another mail account',
        'mailbox'   => '{mail.yourdomain.com:143/notls}INBOX',
        'username'  => '[email protected]',
        'password'  => 'yourpassword'
    )
    

    );

           //check inbox
        $current_mailbox = array(
            'label' => 'My Cpanel website',
            'mailbox' => '{mail.test.com:143/notls}INBOX',
            'username' => '[email protected]',
            'password' => '***'
        );
        // Open an IMAP stream to our mailbox
        $stream = @imap_open($current_mailbox['mailbox'], $current_mailbox['username'], $current_mailbox['password']);
    
        $emails = imap_search($stream, 'SINCE ' . date('d-M-Y', strtotime("-1 week")));
    

    // If we've got some email IDs, sort them from new to old and show them rsort($emails);

        $i = 0;
        $overview = array();
        foreach ($emails as $email_id) {
    
            // Fetch the email's overview and show subject, from and date.
            $overview[$i] = imap_fetch_overview($stream, $email_id, 0);
            $i++;
        }
    

    var_dump($overview);