⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inetmail.h

📁 pwlib源码库
💻 H
📖 第 1 页 / 共 3 页
字号:
    BOOL OnOpen();    virtual void OnHELO(      const PCaselessString & remoteHost  // Name of remote host.    );    // Start connection.    virtual void OnEHLO(      const PCaselessString & remoteHost  // Name of remote host.    );    // Start extended SMTP connection.    virtual void OnQUIT();    // close connection and die.    virtual void OnHELP();    // get help.    virtual void OnNOOP();    // do nothing        virtual void OnTURN();    // switch places        virtual void OnRSET();    // Reset state.    virtual void OnVRFY(      const PCaselessString & name    // Name to verify.    );    // Verify address.    virtual void OnEXPN(      const PCaselessString & name    // Name to expand.    );    // Expand alias.    virtual void OnRCPT(      const PCaselessString & recipient   // Name of recipient.    );    // Designate recipient    virtual void OnMAIL(      const PCaselessString & sender  // Name of sender.    );    // Designate sender        virtual void OnSEND(      const PCaselessString & sender  // Name of sender.    );    // send message to screen    virtual void OnSAML(      const PCaselessString & sender  // Name of sender.    );    // send AND mail        virtual void OnSOML(      const PCaselessString & sender  // Name of sender.    );    // send OR mail    virtual void OnDATA();    // Message text.    /** Handle an unknown command.       @return       TRUE if more processing may be done, FALSE if the       <A>ProcessCommand()</A> function is to return FALSE.     */    virtual BOOL OnUnknown(      const PCaselessString & command  // Complete command line received.    );    virtual void OnSendMail(      const PCaselessString & sender  // Name of sender.    );    // Common code for OnMAIL(), OnSEND(), OnSOML() and OnSAML() funtions.    /** Read a standard text message that is being received by the socket. The       text message is terminated by a line with a '.' character alone.       The default behaviour is to read the data into the <CODE>buffer</CODE>       parameter until either the end of the message or when the       <CODE>messageBufferSize</CODE> bytes have been read.       @return       TRUE if partial message received, FALSE if the end of the data was       received.     */    virtual BOOL OnTextData(PCharArray & buffer, BOOL & completed);    /** Read an eight bit MIME message that is being received by the socket. The       MIME message is terminated by the CR/LF/./CR/LF sequence.       The default behaviour is to read the data into the <CODE>buffer</CODE>       parameter until either the end of the message or when the       <CODE>messageBufferSize</CODE> bytes have been read.       @return       TRUE if partial message received, FALSE if the end of the data was       received.     */    virtual BOOL OnMIMEData(PCharArray & buffer, BOOL & completed);  // Member variables    BOOL        extendedHello;    BOOL        eightBitMIME;    PString     fromAddress;    PString     fromPath;    PStringList toNames;    PStringList toDomains;    PINDEX      messageBufferSize;    enum { WasMAIL, WasSEND, WasSAML, WasSOML } sendCommand;    StuffState  endMIMEDetectState;};//////////////////////////////////////////////////////////////////////////////// PPOP3/** A TCP/IP socket for the Post Office Protocol version 3.   When acting as a client, the procedure is to make the connection to a   remote server, then to retrieve a message using the following procedure:      <PRE><CODE>      PPOP3Client mail("popserver");      if (mail.IsOpen()) {        if (mail.LogIn("Me", "password")) {          if (mail.GetMessageCount() > 0) {            PUnsignedArray sizes = mail.GetMessageSizes();            for (PINDEX i = 0; i < sizes.GetSize(); i++) {              if (mail.BeginMessage(i+1))                mail.Read(myMessage, sizes[i]);              else                PError << "Error getting mail message." << endl;            }          }          else            PError << "No mail messages." << endl;        }        else           PError << "Mail log in failed." << endl;      }      else         PError << "Mail conection failed." << endl;      </PRE></CODE>    When acting as a server, a descendant class would be created to override    at least the <A>HandleOpenMailbox()</A>, <A>HandleSendMessage()</A> and    <A>HandleDeleteMessage()</A> functions. Other functions may be overridden    for further enhancement to the sockets capabilities, but these will give a    basic POP3 server functionality.    The server socket thread would continuously call the    <A>ProcessMessage()</A> function until it returns FALSE. This will then    call the appropriate virtual function on parsing the POP3 protocol. */class PPOP3 : public PInternetProtocol{  PCLASSINFO(PPOP3, PInternetProtocol)  public:    enum Commands {      USER, PASS, QUIT, RSET, NOOP, STATcmd,      LIST, RETR, DELE, APOP, TOP,  UIDL,      AUTH, NumCommands    };  protected:    PPOP3();    /** Parse a response line string into a response code and any extra info       on the line. Results are placed into the member variables       <CODE>lastResponseCode</CODE> and <CODE>lastResponseInfo</CODE>.       The default bahaviour looks for a space or a '-' and splits the code       and info either side of that character, then returns FALSE.       @return       Position of continuation character in response, 0 if no continuation       lines are possible.     */    virtual PINDEX ParseResponse(      const PString & line // Input response line to be parsed    );  // Member variables    static PString okResponse;    static PString errResponse;};/** A TCP/IP socket for the Post Office Protocol version 3.   When acting as a client, the procedure is to make the connection to a   remote server, then to retrieve a message using the following procedure:      <PRE><CODE>      PPOP3Client mail;      if (mail.Connect("popserver")) {        if (mail.LogIn("Me", "password")) {          if (mail.GetMessageCount() > 0) {            PUnsignedArray sizes = mail.GetMessageSizes();            for (PINDEX i = 0; i < sizes.GetSize(); i++) {              if (mail.BeginMessage(i+1))                mail.Read(myMessage, sizes[i]);              else                PError << "Error getting mail message." << endl;            }          }          else            PError << "No mail messages." << endl;        }        else           PError << "Mail log in failed." << endl;      }      else         PError << "Mail conection failed." << endl;      </PRE></CODE> */class PPOP3Client : public PPOP3{  PCLASSINFO(PPOP3Client, PPOP3)  public:    /** Create a TCP/IP POP3 protocol socket channel. The parameterless form       creates an unopened socket, the form with the <CODE>address</CODE>       parameter makes a connection to a remote system, opening the socket. The       form with the <CODE>socket</CODE> parameter opens the socket to an       incoming call from a "listening" socket.     */    PPOP3Client();    /** Destroy the channel object. This will close the channel and as a       client, QUIT from remote POP3 server.     */    ~PPOP3Client();  // Overrides from class PChannel.    /** Close the socket, and if connected as a client, QUITs from server.       @return       TRUE if the channel was closed and the QUIT accepted by the server.     */    virtual BOOL Close();  // New functions for class.    enum LoginOptions    {      AllowUserPass = 1,      // Allow the use of the plain old USER/PASS if APOP                              // or SASL are not available      UseSASL = 2,            // Use SASL if the AUTH command is supported by                              // the server      AllowClearTextSASL = 4  // Allow LOGIN and PLAIN mechanisms to be used    };    /** Log into the POP server using the mailbox and access codes specified.       @return       TRUE if logged in.     */    BOOL LogIn(      const PString & username,       // User name on remote system.      const PString & password,       // Password for user name.      int options = AllowUserPass     // See LoginOptions above    );    /** Get a count of the number of messages in the mail box.       @return       Number of messages in mailbox or -1 if an error occurred.     */    int GetMessageCount();    /** Get an array of a integers representing the sizes of each of the       messages in the mail box.       @return       Array of integers representing the size of each message.     */    PUnsignedArray GetMessageSizes();    /** Get an array of a strings representing the standard internet message       headers of each of the messages in the mail box.       Note that the remote server may not support this function, in which       case an empty array will be returned.       @return       Array of strings continaing message headers.     */    PStringArray GetMessageHeaders();    /* Begin the retrieval of an entire message. The application may then use       the <A>PApplicationSocket::ReadLine()</A> function with the       <CODE>unstuffLine</CODE> parameter set to TRUE. Repeated calls until       its return valus is FALSE will read the message headers and body.       @return       Array of strings continaing message headers.     */    BOOL BeginMessage(      PINDEX messageNumber        /** Number of message to retrieve. This is an integer from 1 to the           maximum number of messages available.         */    );    /** Delete the message specified from the mail box.       @return       Array of strings continaing message headers.     */    BOOL DeleteMessage(      PINDEX messageNumber        /* Number of message to retrieve. This is an integer from 1 to the           maximum number of messages available.         */    );  protected:    BOOL OnOpen();  // Member variables    BOOL loggedIn;    PString apopBanner;};/** A TCP/IP socket for the Post Office Protocol version 3.    When acting as a server, a descendant class would be created to override    at least the <A>HandleOpenMailbox()</A>, <A>HandleSendMessage()</A> and    <A>HandleDeleteMessage()</A> functions. Other functions may be overridden    for further enhancement to the sockets capabilities, but these will give a    basic POP3 server functionality.    The server socket thread would continuously call the    <A>ProcessMessage()</A> function until it returns FALSE. This will then    call the appropriate virtual function on parsing the POP3 protocol. */class PPOP3Server : public PPOP3{  PCLASSINFO(PPOP3Server, PPOP3)  public:    /** Create a TCP/IP POP3 protocol socket channel. The parameterless form       creates an unopened socket, the form with the <CODE>address</CODE>       parameter makes a connection to a remote system, opening the socket. The       form with the <CODE>socket</CODE> parameter opens the socket to an       incoming call from a "listening" socket.     */    PPOP3Server();  // New functions for class.    /** Process commands, dispatching to the appropriate virtual function. This       is used when the socket is acting as a server.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -