Chilkat Examples

ChilkatHOMEAndroid™Classic ASPCC++C#C# WinRTDelphi ActiveXDelphi DLLVisual FoxProJavaMFCObjective-CPerlPHP ActiveXPHP ExtensionPowerShellPythonRubySQL ServerUnicode CUnicode C++Visual Basic 6.0VB.NETVB.NET WinRTVBScript

Perl Examples

Certificates
Email Object
Encryption
FTP
HTML-to-XML/Text
Gzip
HTTP
IMAP
MHT / HTML Email
PFX/P12
Java KeyStore (JKS)
POP3
RSA Encryption
MIME
SMTP
Socket/SSL/TLS
SSH Key
SSH
SFTP
Tar Archive
XML
XMP
Zip

More Examples...
Amazon S3
Bounced Email
CSV
Diffie-Hellman
DKIM / DomainKey
NTLM

 

 

 

 

 

 

 

(Perl) Scan for Emails with Attachments and Save Attachments to Files

Scan for emails with attachments and save attachments.

Chilkat Perl Downloads

Perl Module for Windows, Linux, MAC OS X

use chilkat();

$imap = new chilkat::CkImap();

#  Anything unlocks the component and begins a fully-functional 30-day trial.
$success = $imap->UnlockComponent("Anything for 30-day trial");
if ($success != 1) {
    print $imap->lastErrorText() . "\r\n";
    exit;
}

#  Connect to an IMAP server.
$success = $imap->Connect("mail.chilkatsoft.com");
if ($success != 1) {
    print $imap->lastErrorText() . "\r\n";
    exit;
}

#  Login
$success = $imap->Login("myLogin","myPassword");
if ($success != 1) {
    print $imap->lastErrorText() . "\r\n";
    exit;
}

#  Select an IMAP mailbox
$success = $imap->SelectMailbox("Inbox");
if ($success != 1) {
    print $imap->lastErrorText() . "\r\n";
    exit;
}

#  We can choose to fetch UIDs or sequence numbers.
$fetchUids = 1;

#  Get the message IDs of all the emails in the mailbox
# messageSet is a CkMessageSet
$messageSet = $imap->Search("ALL",$fetchUids);
if ($messageSet eq null ) {
    print $imap->lastErrorText() . "\r\n";
    exit;
}

#  Fetch the email headers into a bundle object:

# bundle is a CkEmailBundle
$bundle = $imap->FetchHeaders($messageSet);
if ($bundle eq null ) {

    print $imap->lastErrorText() . "\r\n";
    exit;
}

#  Scan for emails with attachments, and save the attachments
#  to a sub-directory.

for ($i = 0; $i <= $bundle->get_MessageCount() - 1; $i++) {

    # email is a CkEmail
    $email = $bundle->GetEmail($i);

    #  Does this email have attachments?
    #  Use GetMailNumAttach because the attachments
    #  are not actually in the email object because
    #  we only downloaded headers.
    #  (Had we downloaded the full emails by
    #  calling mailman.FetchBundle, we could look
    #  at the email object's NumAttachments property.)
    $numAttach = $imap->GetMailNumAttach($email);

    if ($numAttach > 0) {
        #  Download the entire email and save the
        #  attachments. (Remember, we
        #  need to download the entire email because
        #  only the headers were previously downloaded.
        #  If the entire emails were downloaded by
        #  calling FetchBundle instead of FetchHeaders,
        #  this would not be necessary.

        #  The ckx-imap-uid header field is added when
        #  headers are downloaded.  This makes it possible
        #  to get the UID from the email object.
        $uidStr = $email->getHeaderField("ckx-imap-uid");
        $uid = $uidStr;

        # fullEmail is a CkEmail
        $fullEmail = $imap->FetchSingle($uid,1);
        if (!($fullEmail eq null )) {
            $fullEmail->SaveAllAttachments("attachmentsDir");

        }

        for ($j = 0; $j <= $numAttach - 1; $j++) {
            $filename = $imap->getMailAttachFilename($email,$j);
            print $filename . "\r\n";
        }

    }

}

#  Disconnect from the IMAP server.
$imap->Disconnect();


 

© 2000-2014 Chilkat Software, Inc. All Rights Reserved.