Unicode C
Unicode C
Get the Number of IMAP Attachments
See more IMAP Examples
Demonstrates the Chilkat Imap.GetMailNumAttach method, which returns the number of ordinary attachments on a message. The only argument is the Email. This example fetches only the headers and reports the attachment count.
Background: A header-only fetch downloads no attachment bodies, so the
Email object's own downloaded-attachment count can be 0. GetMailNumAttach instead reads the ckx-imap-numAttach metadata, giving the true count — which is what you want when building a message list that shows whether each message has attachments.Chilkat Unicode C Downloads
#include <C_CkImapW.h>
#include <C_CkEmailW.h>
void ChilkatSample(void)
{
BOOL success;
HCkImapW imap;
BOOL headersOnly;
BOOL useUid;
int seqNum;
HCkEmailW email;
int numAttach;
success = FALSE;
// Demonstrates the Imap.GetMailNumAttach method, which returns the number of ordinary
// attachments on a message. The only argument is the Email.
imap = CkImapW_Create();
CkImapW_putSsl(imap,TRUE);
CkImapW_putPort(imap,993);
success = CkImapW_Connect(imap,L"imap.example.com");
if (success == FALSE) {
wprintf(L"%s\n",CkImapW_lastErrorText(imap));
CkImapW_Dispose(imap);
return;
}
success = CkImapW_Login(imap,L"user@example.com",L"myPassword");
if (success == FALSE) {
wprintf(L"%s\n",CkImapW_lastErrorText(imap));
CkImapW_Dispose(imap);
return;
}
success = CkImapW_SelectMailbox(imap,L"Inbox");
if (success == FALSE) {
wprintf(L"%s\n",CkImapW_lastErrorText(imap));
CkImapW_Dispose(imap);
return;
}
// Fetch only the message headers. Attachment bodies are NOT downloaded, but the ckx-imap-*
// metadata describing the attachments is present, so the attachment info methods still work.
headersOnly = TRUE;
useUid = FALSE;
seqNum = 1;
email = CkEmailW_Create();
success = CkImapW_FetchEmail(imap,headersOnly,seqNum,useUid,email);
if (success == FALSE) {
wprintf(L"%s\n",CkImapW_lastErrorText(imap));
CkImapW_Dispose(imap);
CkEmailW_Dispose(email);
return;
}
numAttach = CkImapW_GetMailNumAttach(imap,email);
wprintf(L"This message has %d attachment(s).\n",numAttach);
success = CkImapW_Disconnect(imap);
if (success == FALSE) {
wprintf(L"%s\n",CkImapW_lastErrorText(imap));
CkImapW_Dispose(imap);
CkEmailW_Dispose(email);
return;
}
CkImapW_Dispose(imap);
CkEmailW_Dispose(email);
}