mail.h
上传用户:hzhsqp
上传日期:2007-01-06
资源大小:1600k
文件大小:10k
源码类别:

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * mail.h
  3.  *
  4.  * Electronic Mail abstraction class.
  5.  *
  6.  * Portable Windows Library
  7.  *
  8.  * Copyright (c) 1993-1998 Equivalence Pty. Ltd.
  9.  *
  10.  * The contents of this file are subject to the Mozilla Public License
  11.  * Version 1.0 (the "License"); you may not use this file except in
  12.  * compliance with the License. You may obtain a copy of the License at
  13.  * http://www.mozilla.org/MPL/
  14.  *
  15.  * Software distributed under the License is distributed on an "AS IS"
  16.  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
  17.  * the License for the specific language governing rights and limitations
  18.  * under the License.
  19.  *
  20.  * The Original Code is Portable Windows Library.
  21.  *
  22.  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
  23.  *
  24.  * Portions are Copyright (C) 1993 Free Software Foundation, Inc.
  25.  * All Rights Reserved.
  26.  *
  27.  * Contributor(s): ______________________________________.
  28.  *
  29.  * $Log: mail.h,v $
  30.  * Revision 1.9  1999/03/09 02:59:50  robertj
  31.  * Changed comments to doc++ compatible documentation.
  32.  *
  33.  * Revision 1.8  1999/02/16 08:12:00  robertj
  34.  * MSVC 6.0 compatibility changes.
  35.  *
  36.  * Revision 1.7  1999/02/10 13:20:53  robertj
  37.  * Added ability to have attachments in mail messages.
  38.  *
  39.  * Revision 1.6  1998/09/23 06:20:51  robertj
  40.  * Added open source copyright license.
  41.  *
  42.  * Revision 1.5  1997/05/16 12:14:08  robertj
  43.  * Added BCC capability to send mail.
  44.  *
  45.  * Revision 1.4  1995/07/02 01:19:46  robertj
  46.  * Change GetMessageBidy to return BOOL and have body string as
  47.  *   parameter, due to slight change in semantics for large bodies.
  48.  *
  49.  * Revision 1.3  1995/06/17 00:42:22  robertj
  50.  * Added mail reading interface.
  51.  * Changed name to simply PMail
  52.  *
  53.  * Revision 1.2  1995/04/01 08:27:57  robertj
  54.  * Added GUI support.
  55.  *
  56.  * Revision 1.1  1995/03/14  12:44:11  robertj
  57.  * Initial revision
  58.  *
  59.  */
  60. #define _PMAIL
  61. #ifdef __GNUC__
  62. #pragma interface
  63. #endif
  64. /**This class establishes a mail session with the platforms mail system.
  65. */
  66. class PMail : public PObject
  67. {
  68.   PCLASSINFO(PMail, PObject);
  69.   public:
  70.   /**@name Construction */
  71.   //@{
  72.     /**Create a mail session. It is initially not logged in.
  73.      */
  74.     PMail();
  75.     /**Create a mail session.
  76.        Attempt to log in using the parameters provided.
  77.      */
  78.     PMail(
  79.       const PString & username,  /// User withing mail system to use.
  80.       const PString & password   /// Password for user in mail system.
  81.     );
  82.     /**Create a mail session.
  83.        Attempt to log in using the parameters provided.
  84.      */
  85.     PMail(
  86.       const PString & username,  /// User withing mail system to use.
  87.       const PString & password,  /// Password for user in mail system.
  88.       const PString & service
  89.       /**A platform dependent string indicating the location of the underlying
  90.          messaging service, eg the path to a message store or node name of the
  91.          mail server.
  92.        */
  93.     );
  94.     virtual ~PMail();
  95.     /* Destroy the mail session, logging off the mail system if necessary.
  96.      */
  97.   //@}
  98.   /**@name Log in/out functions */
  99.   //@{
  100.     /**Attempt to log on to the mail system using the parameters provided.
  101.        @return
  102.        TRUE if successfully logged on.
  103.      */
  104.     BOOL LogOn(
  105.       const PString & username,  /// User withing mail system to use.
  106.       const PString & password   /// Password for user in mail system.
  107.     );
  108.     /**Attempt to log on to the mail system using the parameters provided.
  109.        @return
  110.        TRUE if successfully logged on.
  111.      */
  112.     BOOL LogOn(
  113.       const PString & username,  /// User withing mail system to use.
  114.       const PString & password,  /// Password for user in mail system.
  115.       const PString & service
  116.       /**A platform dependent string indicating the location of the underlying
  117.          messaging service, eg the path to a message store or node name of the
  118.          mail server.
  119.        */
  120.     );
  121.     /**Log off from the mail system.
  122.        @return
  123.        TRUE if successfully logged off.
  124.      */
  125.     virtual BOOL LogOff();
  126.     /**Determine if the mail session is active and logged into the mail system.
  127.        @return
  128.        TRUE if logged into the mail system.
  129.      */
  130.     BOOL IsLoggedOn() const;
  131.   //@}
  132.   /**@name Send message functions */
  133.   //@{
  134.     /**Send a new simple mail message.
  135.        @return
  136.        TRUE if the mail message was successfully queued. Note that this does
  137.        {bf not} mean that it has been delivered.
  138.      */
  139.     BOOL SendNote(
  140.       const PString & recipient,  /// Name of recipient of the mail message.
  141.       const PString & subject,    /// Subject name for the mail message.
  142.       const char * body           /// Text body of the mail message.
  143.     );
  144.     /**Send a new simple mail message.
  145.        @return
  146.        TRUE if the mail message was successfully queued. Note that this does
  147.        {bf not} mean that it has been delivered.
  148.      */
  149.     BOOL SendNote(
  150.       const PString & recipient,  /// Name of recipient of the mail message.
  151.       const PString & subject,    /// Subject name for the mail message.
  152.       const char * body,          /// Text body of the mail message.
  153.       const PStringList & attachments
  154.                         /// List of files to attach to the mail message.
  155.     );
  156.     /**Send a new simple mail message.
  157.        @return
  158.        TRUE if the mail message was successfully queued. Note that this does
  159.        {bf not} mean that it has been delivered.
  160.      */
  161.     BOOL SendNote(
  162.       const PString & recipient,  /// Name of recipient of the mail message.
  163.       const PStringList & carbonCopies, /// Name of CC recipients.
  164.       const PStringList & blindCarbons, /// Name of BCC recipients.
  165.       const PString & subject,        /// Subject name for the mail message.
  166.       const char * body,              /// Text body of the mail message.
  167.       const PStringList & attachments
  168.                         /// List of files to attach to the mail message.
  169.     );
  170.   //@}
  171.   /**@name Read message functions */
  172.   //@{
  173.     /**Get a list of ID strings for all messages in the mail box.
  174.        @return
  175.        An array of ID strings.
  176.      */
  177.     PStringArray GetMessageIDs(
  178.       BOOL unreadOnly = TRUE    /// Only get the IDs for unread messages.
  179.     );
  180.     /// Message header for each mail item.
  181.     struct Header {
  182.       /// Subject for message.
  183.       PString  subject;           
  184.       /// Full name of message originator.
  185.       PString  originatorName;    
  186.       /// Return address of message originator.
  187.       PString  originatorAddress; 
  188.       /// Time message received.
  189.       PTime    received;          
  190.     };
  191.     /**Get the header information for a message.
  192.        @return
  193.        TRUE if header information was successfully obtained.
  194.      */
  195.     BOOL GetMessageHeader(
  196.       const PString & id,      /// Identifier of message to get header.
  197.       Header & hdrInfo         /// Header info for the message.
  198.     );
  199.     /**Get the body text for a message into the #body# string
  200.        parameter.
  201.        Note that if the body text for the mail message is very large, the
  202.        function will return FALSE. To tell between an error getting the message
  203.        body and having a large message body the #GetErrorCode()# function
  204.        must be used.
  205.        To get a large message body, the #GetMessageAttachments()# should
  206.        be used with the #includeBody# parameter set to TRUE so that
  207.        the message body is placed into a disk file.
  208.        @return
  209.        TRUE if the body text was retrieved, FALSE if the body was too large or
  210.        some other error occurred.
  211.      */
  212.     BOOL GetMessageBody(
  213.       const PString & id,      /// Identifier of message to get body.
  214.       PString & body,          /// Body text of mail message.
  215.       BOOL markAsRead = FALSE  /// Mark the message as read.
  216.     );
  217.     /**Get all of the attachments for a message as disk files.
  218.        @return
  219.        TRUE if attachments were successfully obtained.
  220.      */
  221.     BOOL GetMessageAttachments(
  222.       const PString & id,       /// Identifier of message to get attachments.
  223.       PStringArray & filenames, /// File names for each attachment.
  224.       BOOL includeBody = FALSE, /// Include the message body as first attachment
  225.       BOOL markAsRead = FALSE   /// Mark the message as read
  226.     );
  227.     /**Mark the message as read.
  228.        @return
  229.        TRUE if message was successfully marked as read.
  230.      */
  231.     BOOL MarkMessageRead(
  232.       const PString & id      /// Identifier of message to get header.
  233.     );
  234.     /**Delete the message from the system.
  235.        @return
  236.        TRUE if message was successfully deleted.
  237.      */
  238.     BOOL DeleteMessage(
  239.       const PString & id      /// Identifier of message to get header.
  240.     );
  241.   //@}
  242.   /**@name User look up functions */
  243.   //@{
  244.     /// Result of a lookup operation with the #LookUp()# function.
  245.     enum LookUpResult {
  246.       /// User name is unknown in mail system.
  247.       UnknownUser,    
  248.       /// User is ambiguous in mail system.
  249.       AmbiguousUser,  
  250.       /// User is a valid, unique name in mail system.
  251.       ValidUser,      
  252.       /// An error occurred during the look up
  253.       LookUpError     
  254.     };
  255.     /**Look up the specified name and verify that they are a valid address in
  256.        the mail system.
  257.        @return
  258.        result of the name lookup.
  259.      */
  260.     LookUpResult LookUp(
  261.       const PString & name,  /// Name to look up.
  262.       PString * fullName = NULL
  263.       /**String to receive full name of user passed in #name#. If
  264.          NULL then the full name is {bf not} returned.
  265.        */
  266.     );
  267.   //@}
  268.   /**@name Error functions */
  269.   //@{
  270.     /**Get the internal error code for the last error by a function in this
  271.        mail session.
  272.        @return
  273.        integer error code for last operation.
  274.      */
  275.     int GetErrorCode() const;
  276.     /**Get the internal error description for the last error by a function in
  277.        this mail session.
  278.        @return
  279.        string error text for last operation.
  280.      */
  281.     PString GetErrorText() const;
  282.   //@}
  283.   protected:
  284.     void Construct();
  285.     // Common construction code.
  286.     /// Flag indicating the session is active.
  287.     BOOL loggedOn;
  288. #ifdef DOC_PLUS_PLUS
  289. };
  290. #endif
  291. // Class declaration continued in platform specific header file ///////////////