Sophie

Sophie

distrib > Mandriva > cooker > x86_64 > by-pkgid > faed6dc8f28cec1d27210717f2b419fd > files > 204

lib64etpan-devel-1.1-3.x86_64.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Session</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="libEtPan! API"
HREF="book1.htm"><LINK
REL="UP"
TITLE="Storages, folders, messages"
HREF="c2988.htm"><LINK
REL="PREVIOUS"
TITLE="Message"
HREF="x3198.htm"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>libEtPan! API</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x3198.htm"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 5. Storages, folders, messages</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
>&nbsp;</TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN3472"
>Session</A
></H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="MAILSESSION-DRIVER"
>Session driver</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>#include &lt;libetpan/libetpan.h&gt;

struct mailsession_driver {
  char * sess_name;

  int (* sess_initialize)(mailsession * session);
  void (* sess_uninitialize)(mailsession * session);

  int (* sess_parameters)(mailsession * session,
      int id, void * value);

  int (* sess_connect_stream)(mailsession * session, mailstream * s);
  int (* sess_connect_path)(mailsession * session, char * path);

  int (* sess_starttls)(mailsession * session);

  int (* sess_login)(mailsession * session, char * userid, char * password);
  int (* sess_logout)(mailsession * session);
  int (* sess_noop)(mailsession * session);

  /* folders operations */

  int (* sess_build_folder_name)(mailsession * session, char * mb,
      char * name, char ** result);

  int (* sess_create_folder)(mailsession * session, char * mb);
  int (* sess_delete_folder)(mailsession * session, char * mb);
  int (* sess_rename_folder)(mailsession * session, char * mb,
      char * new_name);
  int (* sess_check_folder)(mailsession * session);
  int (* sess_examine_folder)(mailsession * session, char * mb);
  int (* sess_select_folder)(mailsession * session, char * mb);
  int (* sess_expunge_folder)(mailsession * session);
  int (* sess_status_folder)(mailsession * session, char * mb,
      uint32_t * result_num, uint32_t * result_recent,
      uint32_t * result_unseen);
  int (* sess_messages_number)(mailsession * session, char * mb,
      uint32_t * result);
  int (* sess_recent_number)(mailsession * session, char * mb,
      uint32_t * result);
  int (* sess_unseen_number)(mailsession * session, char * mb,
      uint32_t * result);

  int (* sess_list_folders)(mailsession * session, char * mb,
      struct mail_list ** result);
  int (* sess_lsub_folders)(mailsession * session, char * mb,
      struct mail_list ** result);

  int (* sess_subscribe_folder)(mailsession * session, char * mb);
  int (* sess_unsubscribe_folder)(mailsession * session, char * mb);

  /* messages operations */

  int (* sess_append_message)(mailsession * session,
      char * message, size_t size);
  int (* sess_copy_message)(mailsession * session,
      uint32_t num, char * mb);
  int (* sess_move_message)(mailsession * session,
      uint32_t num, char * mb);

  int (* sess_get_message)(mailsession * session,
      uint32_t num, mailmessage ** result);

  int (* sess_get_message_by_uid)(mailsession * session,
      const char * uid, mailmessage ** result);
  
  int (* sess_get_messages_list)(mailsession * session,
      struct mailmessage_list ** result);
  int (* sess_get_envelopes_list)(mailsession * session,
      struct mailmessage_list * env_list);
  int (* sess_remove_message)(mailsession * session, uint32_t num);
};
        </PRE
><P
>          This is a driver for a session.
        </P
><P
></P
><UL
><LI
><P
>              <B
CLASS="COMMAND"
>sess_name</B
> is the name of the driver.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_initialize()</B
> is the function
              that will initializes a data structure (field
              <B
CLASS="COMMAND"
>sess_data</B
> in the session) specific to
              the driver.
              The field data (field <B
CLASS="COMMAND"
>sess_data</B
> in
              the session) is the state of the session,
              the internal data structure used by the driver.
              It is called when creating the
              <B
CLASS="COMMAND"
>mailsession</B
> structure with
              <B
CLASS="COMMAND"
>mailsession_new()</B
>.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_uninitialize()</B
> frees the structure
              created with <B
CLASS="COMMAND"
>sess_initialize()</B
>
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_parameters()</B
> implements
              functions specific to the given mail access.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_connect_stream()</B
> connects a
              stream to the session.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_connect_path()</B
> notify a main
              path to the session.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_starttls()</B
> changes the current
              stream to a TLS stream
              (see <A
HREF="x229.htm#MAILSTREAM-SSL"
>the Section called <I
>TLS stream</I
> in Chapter 2</A
>).
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_login()</B
> notifies the user and
              the password to authenticate to the session.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_logout()</B
> exits the session and
              closes the stream.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_noop()</B
> does no operation on the
              session, but it can be used to poll for the status of
              the connection.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_build_folder_name()</B
> will return an
              allocated string with that contains the complete path of
              the folder to create.
              <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Use of this method is deprecated</I
></SPAN
>.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_create_folder()</B
> creates the
              folder that corresponds to the given name.
              <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Use of this method is deprecated</I
></SPAN
>.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_delete_folder()</B
> deletes the folder
              that corresponds to the given name.
              <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Use of this method is deprecated</I
></SPAN
>.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_rename_folder()</B
> change the name
              of the folder.
              <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Use of this method is deprecated</I
></SPAN
>.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_check_folder()</B
> makes a
              checkpoint of the session.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_examine_folder()</B
> selects a mailbox as
              readonly.
              <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Use of this method is deprecated</I
></SPAN
>.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_select_folder()</B
> selects a mailbox.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_expunge_folder()</B
> deletes all
              messages marked \Deleted.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_status_folder()</B
> queries the
              status of the folder (number of messages, number of
              recent messages, number of unseen messages).
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_messages_number()</B
> queries the
              number of messages in the folder.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_recent_number()</B
> queries the
              number of recent messages in the folder.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_unseen_number()</B
> queries the number of
              unseen messages in the folder.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_list_folders()</B
> returns the list of
              all sub-mailboxes of the given mailbox.
              <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Use of this method is deprecated</I
></SPAN
>.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_lsub_folders()</B
> returns the list of
              subscribed sub-mailboxes of the given mailbox.
              <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Use of this method is deprecated</I
></SPAN
>.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_subscribe_folder()</B
> subscribes to
              the given mailbox.
              <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Use of this method is deprecated</I
></SPAN
>.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_unsubscribe_folder()</B
> unsubscribes to
              the given mailbox.
              <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Use of this method is deprecated</I
></SPAN
>.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_append_message()</B
> adds a RFC 2822
              message to the current given mailbox.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_copy_message()</B
> copies a message
              whose number is given to a given mailbox. The mailbox
              must be accessible from the same session.
              <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Use of this method is deprecated</I
></SPAN
>.
          </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_move_message()</B
> moves a message whose
              number is given to
              a given mailbox. The mailbox must be accessible from the
              same session.
              <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Use of this method is deprecated</I
></SPAN
>.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_get_messages_list()</B
> returns the list
              of message numbers
              of the current mailbox
              (see <A
HREF="x3198.htm#MAILMESSAGE-LIST"
>the Section called <I
>Message list</I
></A
>).
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_get_envelopes_list()</B
> fills the parsed
              fields in the <B
CLASS="COMMAND"
>mailmessage</B
> structures
              (see <A
HREF="x3198.htm#MAILMESSAGE"
>the Section called <I
>Message</I
></A
>)
              of the <B
CLASS="COMMAND"
>mailmessage_list</B
>
              (see <A
HREF="x3198.htm#MAILMESSAGE-LIST"
>the Section called <I
>Message list</I
></A
>).
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_remove_message()</B
> removes the given
              message from the mailbox.
              The message is permanently deleted.
              <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Use of this method is deprecated</I
></SPAN
>.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_get_message()</B
> returns a
              mailmessage structure
              (see <A
HREF="x3198.htm#MAILMESSAGE"
>the Section called <I
>Message</I
></A
>)
              that corresponds
              to the given message number.
              <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Use of this method is deprecated</I
></SPAN
>.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_get_message_by_uid()</B
> returns a
              mailmessage structure
              (see <A
HREF="x3198.htm#MAILMESSAGE"
>the Section called <I
>Message</I
></A
>)
              that corresponds 
              to the given message unique identifier.
            </P
></LI
></UL
><P
>          mandatory functions are the following :
        </P
><P
></P
><UL
><LI
><P
>              <B
CLASS="COMMAND"
>sess_connect_stream()</B
> or
              <B
CLASS="COMMAND"
>connect_path()</B
>
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_logout()</B
>
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_get_messages_list()</B
>
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_get_envelopes_list()</B
>
            </P
></LI
></UL
><P
>          we advise you to implement these functions :
        </P
><P
></P
><UL
><LI
><P
>              <B
CLASS="COMMAND"
>sess_select_folder()</B
> (in case a session
              can access several folders).
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_noop()</B
> (to check if the server is
              responding)
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_check_folder()</B
> (to make a checkpoint
              of the session)
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_status_folder()</B
>,
              <B
CLASS="COMMAND"
>sess_messages_number()</B
>,
              <B
CLASS="COMMAND"
>sess_recent_number()</B
>,
              <B
CLASS="COMMAND"
>sess_unseen_number()</B
>
              (to get stat of the folder)
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_append_message()</B
> (but can't be done
              in the case of POP3 at least).
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_login()</B
> in a case of an
              authenticated driver.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_starttls()</B
> in a case of a stream
              driver, if the procotol supports STARTTLS.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_get_message_by_uid()</B
> so that the
              application can remember the messages 
              by UID and build its own list of messages.
            </P
></LI
><LI
><P
>              Everything that is specific to the driver will be
              implemented in <B
CLASS="COMMAND"
>sess_parameters()</B
>.
            </P
></LI
></UL
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="MAILSESSION"
>Session</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>#include &lt;libetpan/libetpan.h&gt;

struct mailsession {
  void * sess_data;
  mailsession_driver * sess_driver;
};

mailsession * mailsession_new(mailsession_driver * sess_driver);

void mailsession_free(mailsession * session);
        </PRE
><P
>          This is a session. This is an abstraction used to access the
          storage, using the network or the filesystem.
        </P
><P
></P
><UL
><LI
><P
>              <B
CLASS="COMMAND"
>sess_data</B
> is the state of the
              session. This is specific to the driver.
            </P
></LI
><LI
><P
>              <B
CLASS="COMMAND"
>sess_driver</B
> is the driver of the
              session.
            </P
></LI
></UL
><P
>          <B
CLASS="COMMAND"
>mailsession_new()</B
> will create a new session
          using the given driver (<B
CLASS="COMMAND"
>sess_driver</B
>).
        </P
><P
>          <B
CLASS="COMMAND"
>mailsession_free()</B
> will release the memory
          used by the session.
        </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN3670"
>mailsession_parameters</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>#include &lt;libetpan/libetpan.h&gt;

int mailsession_parameters(mailsession * session,
			   int id, void * value);
        </PRE
><P
>          This function make calls specific to the driver
        </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN3674"
>mailsession_connect_stream</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>#include &lt;libetpan/libetpan.h&gt;

int mailsession_connect_stream(mailsession * session, mailstream * s);
        </PRE
><P
>          There are drivers of two kinds : stream drivers (driver that
          connects to servers through TCP or other means of connection)
          and file drivers (driver that are based on filesystem)

          This function can only be used by stream drivers and
          this connects a stream to the session
        </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN3678"
>mailsession_connect_path</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>#include &lt;libetpan/libetpan.h&gt;

int mailsession_connect_path(mailsession * session, char * path);
        </PRE
><P
>          This function can only be used by file drivers and
          selects the main path of the session.
        </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN3682"
>mailsession_starttls</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>#include &lt;libetpan/libetpan.h&gt;

int mailsession_starttls(mailsession * session);
        </PRE
><P
>          This switches the current connection to TLS (secure layer).
          This will only work with stream drivers.
        </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN3686"
>mailsession_login</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>#include &lt;libetpan/libetpan.h&gt;

int mailsession_login(mailsession * session,
		      char * userid, char * password);
        </PRE
><P
>          This notifies the login and the password to authenticate
          to the session.
        </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN3690"
>mailsession_logout</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>#include &lt;libetpan/libetpan.h&gt;

int mailsession_logout(mailsession * session);
        </PRE
><P
>          This function disconnects the session and closes the stream.
        </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN3694"
>mailsession_noop</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>#include &lt;libetpan/libetpan.h&gt;

int mailsession_noop(mailsession * session);
        </PRE
><P
>          This function does no operation on the session, but it can be
          used to poll for the status of the connection.
        </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN3698"
>mailsession_check_folder</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>#include &lt;libetpan/libetpan.h&gt;

int mailsession_check_folder(mailsession * session);
        </PRE
><P
>          This function makes a checkpoint of the session.
        </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN3702"
>mailsession_select_folder</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>#include &lt;libetpan/libetpan.h&gt;

int mailsession_select_folder(mailsession * session, char * mb);
        </PRE
><P
>          This function selects a mailbox.
        </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN3706"
>mailsession_expunge_folder</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>#include &lt;libetpan/libetpan.h&gt;

int mailsession_expunge_folder(mailsession * session);
        </PRE
><P
>          This function deletes all messages marked for deletion.
        </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN3710"
>mailsession_status_folder</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>#include &lt;libetpan/libetpan.h&gt;

int mailsession_status_folder(mailsession * session, char * mb,
    uint32_t * result_messages, uint32_t * result_recent,
    uint32_t * result_unseen);
        </PRE
><P
>          This function queries the status of the folder
          (number of messages, number of recent messages, number of
          unseen messages).
        </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN3714"
>mailsession_messages_number</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>#include &lt;libetpan/libetpan.h&gt;

int mailsession_messages_number(mailsession * session, char * mb,
				uint32_t * result);
        </PRE
><P
>          This function queries the number of messages in the folder.
        </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN3718"
>mailsession_recent_number</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>#include &lt;libetpan/libetpan.h&gt;

int mailsession_recent_number(mailsession * session,
			      char * mb, uint32_t * result);
        </PRE
><P
>          This function queries the number of recent messages in the
          folder.
        </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN3722"
>mailsession_unseen_number</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>#include &lt;libetpan/libetpan.h&gt;

int mailsession_unseen_number(mailsession * session, char * mb,
			      uint32_t * result);
        </PRE
><P
>          This function queries the number of unseen messages in the
          folder.
        </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN3726"
>mailsession_append_message</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>#include &lt;libetpan/libetpan.h&gt;

int mailsession_append_message(mailsession * session,
			       char * message, size_t size);
        </PRE
><P
>          This adds a RFC 2822 message to the current mailbox.
        </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN3730"
>mailsession_get_messages_list</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>#include &lt;libetpan/libetpan.h&gt;

int mailsession_get_messages_list(mailsession * session,
				  struct mailmessage_list ** result);
        </PRE
><P
>          This function returns the list of messages
          of the current mailbox.
        </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN3734"
>mailsession_get_envelopes_list</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>#include &lt;libetpan/libetpan.h&gt;

int mailsession_get_envelopes_list(mailsession * session,
				   struct mailmessage_list * result);
        </PRE
><P
>          This function fills the parsed fields in the
          <B
CLASS="COMMAND"
>mailmessage</B
> structures
          (see <A
HREF="x3198.htm#MAILMESSAGE"
>the Section called <I
>Message</I
></A
>)
          of the mailmessage_list
          (see <A
HREF="x3198.htm#MAILMESSAGE-LIST"
>the Section called <I
>Message list</I
></A
>).
        </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN3741"
>mailsession_get_message</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>#include &lt;libetpan/libetpan.h&gt;

int mailsession_get_message(mailsession * session,
			    uint32_t num, mailmessage ** result);
        </PRE
><P
>          This function returns a <B
CLASS="COMMAND"
>mailmessage</B
>
          (see <A
HREF="x3198.htm#MAILMESSAGE"
>the Section called <I
>Message</I
></A
>) structure that
          corresponds to the given message number.
        </P
><DIV
CLASS="WARNING"
><P
></P
><TABLE
CLASS="WARNING"
BORDER="1"
WIDTH="100%"
><TR
><TD
ALIGN="CENTER"
><B
>Warning</B
></TD
></TR
><TR
><TD
ALIGN="LEFT"
><P
>            <B
CLASS="COMMAND"
>mailsession_get_message_by_uid()</B
> should
            be used instead.
          </P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN3750"
>mailsession_get_message_by_uid</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>#include &lt;libetpan/libetpan.h&gt;

int mailsession_get_message_by_uid(mailsession * session,
    const char * uid, mailmessage ** result);
        </PRE
><P
>          This function returns a mailmessage structure
          that corresponds to the given message unique identifier.
          This is currently implemented only for cached drivers.
        </P
><DIV
CLASS="WARNING"
><P
></P
><TABLE
CLASS="WARNING"
BORDER="1"
WIDTH="100%"
><TR
><TD
ALIGN="CENTER"
><B
>Warning</B
></TD
></TR
><TR
><TD
ALIGN="LEFT"
><P
>            That deprecates the use of
            <B
CLASS="COMMAND"
>mailsession_get_message()</B
>.
          </P
></TD
></TR
></TABLE
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x3198.htm"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="book1.htm"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>&nbsp;</TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Message</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c2988.htm"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>&nbsp;</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>