gecko-dev/msgsdk/C/highlevel/include/imstore.h
1999-11-02 06:20:05 +00:00

282 lines
12 KiB
C

/*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is the Netscape Messaging Access SDK Version 3.5 code,
* released on or about June 15, 1998. *
* The Initial Developer of the Original Code is Netscape Communications
* Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s): ______________________________________.
*/
/*
* Copyright (c) 1997 and 1998 Netscape Communications Corporation
* (http://home.netscape.com/misc/trademarks.html)
*/
#ifndef IMSTORE_H
#define IMSTORE_H
#ifdef __cplusplus
extern "C" {
#endif
/* ERRORS */
#define IMSTORE_OK 0
#define IMSTORE_ERR_IO_READ -1
#define IMSTORE_ERR_IO_WRITE -2
#define IMSTORE_ERR_NO_DATA -3
#define IMSTORE_ERR_INVALID_MSG -4
#define IMSTORE_ERR_INVALID_FOLDER -5
#define IMSTORE_ERR_INVALID_HOST -6
#define IMSTORE_ERR_INVALID_PROTOCOL -7
#define IMSTORE_ERR_CANT_DELETE -8
#define IMSTORE_ERR_CANT_COPY -9
#define IMSTORE_ERR_CANT_MOVE -10
typedef struct IMMessageSummary
{
char * foldername;
char * sender;
char * subject;
char * date;
char * msgid;
long size;
} IMMessageSummary_t;
typedef struct IMSearchCriteria
{
char * fieldName; /* The special string "TextBody" implies all text parts in the Message */
char * searchString; /* The string to search for */
int andOr; /* 0 = OR; 1 = AND */
struct IMSearchCriteria * next;
} IMSearchCriteria_t;
typedef struct IMStore IMStore_t; /* Opaque handle to the store */
/***************************************************************************************
* Connects to the message store at the specified host, on the default port based on the
* specified protocol.
*
* Parameters:
* in_host Name of the host to connect to.
* in_protocol Protocol to be used to connect to the message store.
* Valid values for protocol are "POP3" and "IMAP4".
* out_ppStore Opaque handle to store, to be passed to the subsequent calls to the store.
*
* Returns: IMSTORE_OK on success and a valid handle to the store is returned in ppStore.
* Other errors as listed above are returned for error conditions.
* See Also: IMStore_disconnect().
*
***************************************************************************************/
int IMStore_connect (char * in_host,
char * in_protocol,
IMStore_t ** out_ppStore);
/***************************************************************************************
* Logs into message store as the specified user.
*
* Parameters:
* in_pStore Opaque handle to store, obtained from IMStore_connect().
* in_user Username to login with.
* in_pass Password to login with.
*
* Returns: IMSTORE_OK on success.
* Other errors as listed above are returned for error conditions.
* See Also: IMStore_logout().
*
***************************************************************************************/
int IMStore_login (IMStore_t * in_pStore,
char * in_user,
char * in_pass);
/***************************************************************************************
* Lists the subs folders one level below the specified root folder.
*
* Parameters:
* in_pStore Opaque handle to store, obtained from IMStore_connect().
* in_root Name of the root folder. Can't be NULL.
* out_ppSubFolders Message summary structures.
*
* Returns: IMSTORE_OK on success.
* Other errors as listed above are returned for error conditions.
*
***************************************************************************************/
int IMStore_listSubFolders (IMStore_t * in_pStore,
char * in_root,
char ** out_ppSubFolders);
/***************************************************************************************
* Lists the message summaries for the messages in the specified folder.
*
* Parameters:
* in_pStore Opaque handle to store, obtained from IMStore_connect().
* in_folder Name of the folder. NULL implies INBOX.
* out_ppSummary Message summary structures.
*
* Returns: IMSTORE_OK on success.
* Other errors as listed above are returned for error conditions.
*
***************************************************************************************/
int IMStore_listMessages (IMStore_t * in_pStore,
char * in_folder,
IMMessageSummary_t ** out_ppSummary);
/***************************************************************************************
* Deletes the specified message in the specified folder.
*
* Parameters:
* in_pStore Opaque handle to store, obtained from IMStore_connect().
* in_folder Name of the folder. NULL implies INBOX.
* in_msgnum Sequence number of the Message to delete.
*
* Returns: IMSTORE_OK on success.
* Other errors as listed above are returned for error conditions.
*
***************************************************************************************/
int IMStore_delete (IMStore_t * in_pStore,
char * in_folder,
int in_msgnum);
/***************************************************************************************
* Copies the specified message from the specified folder, to the specified folder.
*
* Parameters:
* in_pStore Opaque handle to store, obtained from IMStore_connect().
* in_source_folder Name of the source folder. NULL implies INBOX.
* in_dest_folder Name of the destination folder. NULL implies INBOX.
* in_msgnum Sequence number of the Message to copy.
*
* Returns: IMSTORE_OK on success.
* Other errors as listed above are returned for error conditions.
*
***************************************************************************************/
int IMStore_copy (IMStore_t * in_pStore,
char * in_source_folder,
char * in_dest_folder,
int in_msgnum);
/***************************************************************************************
* Moves the specified message from the specified folder, to the specified folder.
*
* Parameters:
* in_pStore Opaque handle to store, obtained from IMStore_connect().
* in_source_folder Name of the source folder. NULL implies INBOX.
* in_dest_folder Name of the destination folder. NULL implies INBOX.
* in_msgnum Sequence number of the Message to move.
*
* Returns: IMSTORE_OK on success.
* Other errors as listed above are returned for error conditions.
*
***************************************************************************************/
int IMStore_move (IMStore_t * in_pStore,
char * in_source_folder,
char * in_dest_folder,
int in_msgnum);
/***************************************************************************************
* Retrieves the specified message from the specified folder.
*
* Parameters:
* in_pStore Opaque handle to store, obtained from IMStore_connect().
* in_folder Name of the folder. NULL implies INBOX.
* in_msgnum Sequence number of the Message.
* in_ppMsg pointer the message buffer in MIME format.
*
* Returns: IMSTORE_OK on success.
* Other errors as listed above are returned for error conditions.
*
***************************************************************************************/
int IMStore_retrieve (IMStore_t * in_pStore,
char * in_folder,
int in_msgnum,
char ** out_ppMsg);
/***************************************************************************************
* Fetches the message as specified by the imapURL parameter. This kind of fetch is useful
* for applications that obtain the URL from other sources (like from a webpage).
* NOTE: For fetch, it is not necessary to connect / login to the message store first.
* The URL must conform to the format specified in RFC 2192 and must represent a
* unique message. An example URL is:
* imap://foo.com/public.messages;UIDVALIDITY=123456/;UID=789
*
* Parameters:
* in_imapURL imapURL for a unique message.
* out_ppMsg pointer the message buffer in MIME format.
*
* Returns: IMSTORE_OK on success.
* Other errors as listed above are returned for error conditions.
*
***************************************************************************************/
int IMStore_fetch (char * in_imapURL,
char ** out_ppMsg);
/***************************************************************************************
* Searches the specified folder for the messages matching the specified criteria.
*
* Parameters:
* in_pStore Opaque handle to store, obtained from IMStore_connect().
* in_folder Name of the folder. NULL implies INBOX.
* in_pSearchCriteria A list of IMSearchCriteria_t structures.
* out_pMsgnums Message sequence numbers of all matched messages.
*
* Returns: IMSTORE_OK on success.
* Other errors as listed above are returned for error conditions.
*
***************************************************************************************/
int IMStore_search (IMStore_t * in_pStore,
char * in_folder,
IMSearchCriteria_t * in_pSearchCriteria,
int ** out_ppMsgnums);
/***************************************************************************************
* Logs out from the message store. Another login can be attempted or can disconnect from
* the store.
*
* Parameters:
* in_pStore Opaque handle to store, obtained earlier from IMStore_connect().
*
* Returns: IMSTORE_OK on success.
* Other errors as listed above are returned for error conditions.
* See Also: IMStore_login().
*
***************************************************************************************/
int IMStore_logout (IMStore_t * in_pStore);
/***************************************************************************************
* Disconnects from the message store.
*
* Parameters:
* in_pStore Opaque handle to store, obtained earlier from IMStore_connect().
*
* Returns: IMSTORE_OK on success.
* Other errors as listed above are returned for error conditions.
* See Also: IMStore_connect().
*
***************************************************************************************/
int IMStore_disconnect (IMStore_t * in_pStore);
#ifdef __cplusplus
}
#endif
#endif /* IMSTORE_H */