Logo Search packages:      
Sourcecode: pwlib version File versions  Download package

PRFC822Channel Class Reference

#include <inetmail.h>

Inheritance diagram for PRFC822Channel:

PIndirectChannel PChannel PObject

List of all members.


Detailed Description

A channel for sending/receiving RFC822 compliant mail messages. This encpsulates all that is required to send an RFC822 compliant message via another channel. It automatically adds/strips header information from the stream so the Read() and Write() functions only deal with the message body. For example to send a message using the SMTP classes:

      PSMTPClient mail("mailserver");
      if (mail.IsOpen()) {
        PRFC822Channel message;
        message.SetFromAddress("Me@here.com.au");
        message.SetToAddress("Fred@somwhere.com");
        if (message.Open(mail)) {
          if (mail.BeginMessage("Me@here.com.au", "Fred@somwhere.com")) {
            if (!message.Write(myMessageBody))
              PError << "Mail write failed." << endl;
            if (!message.EndMessage())
              PError << "Mail send failed." << endl;
          }
        }
      }
      else
         PError << "Mail conection failed." << endl;
      

Definition at line 880 of file inetmail.h.


Comparison functions

enum  Comparison { LessThan = -1, EqualTo = 0, GreaterThan = 1 }
virtual Comparison CompareObjectMemoryDirect (const PObject &obj) const
bool operator!= (const PObject &obj) const
bool operator< (const PObject &obj) const
bool operator<= (const PObject &obj) const
bool operator== (const PObject &obj) const
bool operator> (const PObject &obj) const
bool operator>= (const PObject &obj) const

Error functions

enum  ErrorGroup { LastReadError, LastWriteError, LastGeneralError, NumErrorGroups }
enum  Errors {
  NoError, NotFound, FileExists, DiskFull,
  AccessDenied, DeviceInUse, BadParameter, NoMemory,
  NotOpen, Timeout, Interrupted, BufferTooSmall,
  Miscellaneous, ProtocolFailure, NumNormalisedErrors
}
Errors GetErrorCode (ErrorGroup group=NumErrorGroups) const
int GetErrorNumber (ErrorGroup group=NumErrorGroups) const
static PString GetErrorText (Errors lastError, int osError=0)

Miscellaneous functions

enum  ShutdownValue { ShutdownRead = 0, ShutdownWrite = 1, ShutdownReadAndWrite = 2 }
void AbortCommandString ()
BOOL SendCommandString (const PString &command)
BOOL SetBufferSize (PINDEX newSize)

Scattered read/write functions

typedef std::vector< SliceVectorOfSlice
virtual BOOL Read (const VectorOfSlice &slices)
virtual BOOL Write (const VectorOfSlice &slices)

Run Time Type functions

virtual const char * GetClass (unsigned=0) const
virtual BOOL InternalIsDescendant (const char *clsName) const
BOOL IsClass (const char *cls) const
static const char * Class ()

I/O functions

virtual void PrintOn (ostream &strm) const
virtual void ReadFrom (istream &strm)
ostream & operator<< (ostream &strm, const PObject &obj)
istream & operator>> (istream &strm, PObject &obj)

Public Types

enum  Direction { Sending, Receiving }
enum  PXBlockType { PXReadBlock, PXWriteBlock, PXAcceptBlock, PXConnectBlock }

Public Member Functions

BOOL Close ()
BOOL MultipartMessage (const PString &boundary)
PString MultipartMessage ()
void NewMessage (Direction direction)
void NextPart (const PString &boundary)
 PRFC822Channel (Direction direction)
BOOL SendWithSMTP (PSMTPClient *smtp)
BOOL SendWithSMTP (const PString &hostname)
void SetBCC (const PString &bccAddress)
void SetCC (const PString &ccAddress)
void SetContentAttachment (const PFilePath &filename)
void SetContentType (const PString &contentType)
void SetFromAddress (const PString &fromAddress)
void SetHeaderField (const PString &name, const PString &value)
void SetSubject (const PString &subject)
void SetToAddress (const PString &toAddress)
void SetTransferEncoding (const PString &encoding, BOOL autoTranslate=TRUE)
virtual BOOL Write (const void *buf, PINDEX len)
 ~PRFC822Channel ()
Miscellaneous functions
virtual PObjectClone () const
Overrides from class PObject
Comparison Compare (const PObject &obj) const
Overrides from class PChannel
virtual PChannelGetBaseReadChannel () const
virtual PChannelGetBaseWriteChannel () const
virtual PString GetErrorText (ErrorGroup group=NumErrorGroups) const
virtual PString GetName () const
virtual BOOL IsOpen () const
virtual BOOL Read (void *buf, PINDEX len)
virtual BOOL Shutdown (ShutdownValue option)
Information functions
int GetHandle () const
Reading functions
virtual PINDEX GetLastReadCount () const
PTimeInterval GetReadTimeout () const
virtual void OnReadComplete (void *buf, PINDEX len)
virtual BOOL ReadAsync (void *buf, PINDEX len)
BOOL ReadBlock (void *buf, PINDEX len)
virtual int ReadChar ()
PString ReadString (PINDEX len)
void SetReadTimeout (const PTimeInterval &time)
Writing functions
virtual PINDEX GetLastWriteCount () const
PTimeInterval GetWriteTimeout () const
virtual void OnWriteComplete (const void *buf, PINDEX len)
void SetWriteTimeout (const PTimeInterval &time)
virtual BOOL WriteAsync (const void *buf, PINDEX len)
BOOL WriteChar (int c)
BOOL WriteString (const PString &str)
Channel establish functions
PChannelGetReadChannel () const
PChannelGetWriteChannel () const
BOOL Open (PChannel *readChannel, PChannel *writeChannel, BOOL autoDeleteRead=TRUE, BOOL autoDeleteWrite=TRUE)
BOOL Open (PChannel *channel, BOOL autoDelete=TRUE)
BOOL Open (PChannel &channel)
BOOL SetReadChannel (PChannel *channel, BOOL autoDelete=TRUE)
BOOL SetWriteChannel (PChannel *channel, BOOL autoDelete=TRUE)
Overrides from class PObject
virtual PINDEX HashFunction () const

Static Public Member Functions

static BOOL ConvertOSError (int libcReturnValue, Errors &lastError, int &osError)

Static Public Attributes

static const char BCCTag [] = "bcc"
static const char CCTag [] = "cc"
static const char ContentDispositionTag [] = "Content-Disposition"
static const char ContentTransferEncodingTag [] = "Content-Transfer-Encoding"
static const char ContentTypeTag [] = "Content-Type"
static const char DateTag [] = "Date"
static const char FromTag [] = "From"
static const char MailerTag [] = "X-Mailer"
static const char MessageIDTag [] = "Message-ID"
static const char MimeVersionTag [] = "MIME-version"
static const char ReceivedTag [] = "Received"
static const char ReturnPathTag [] = "Return-Path"
static const char SubjectTag [] = "Subject"
static const char ToTag [] = "To"

Protected Member Functions

virtual BOOL ConvertOSError (int libcReturnValue, ErrorGroup group=LastGeneralError)
BOOL OnOpen ()
int PXClose ()
BOOL PXSetIOBlock (PXBlockType type, const PTimeInterval &timeout)
int ReadCharWithTimeout (PTimeInterval &timeout)
BOOL ReceiveCommandString (int nextChar, const PString &reply, PINDEX &pos, PINDEX start)
BOOL SetErrorValues (Errors errorCode, int osError, ErrorGroup group=LastGeneralError)

Protected Attributes

PBase64base64
PStringList boundaries
PString channelName
PReadWriteMutex channelPointerMutex
 Race condition prevention on closing channel.
PMIMEInfo headers
Errors lastErrorCode [NumErrorGroups+1]
 The platform independant error code.
int lastErrorNumber [NumErrorGroups+1]
 The operating system error number (eg as returned by errno).
PINDEX lastReadCount
 Number of byte last read by the Read() function.
PINDEX lastWriteCount
 Number of byte last written by the Write() function.
int os_handle
 The operating system file handle return by standard open() function.
PMIMEInfo partHeaders
PXBlockType px_lastBlockType
PThreadpx_readThread
PMutex px_selectMutex
PThreadpx_selectThread
PMutex px_threadMutex
PMutex px_writeMutex
PThreadpx_writeThread
BOOL readAutoDelete
 Automatically delete read channel on destruction.
PChannelreadChannel
 Channel for read operations.
PTimeInterval readTimeout
 Timeout for read operations.
BOOL writeAutoDelete
 Automatically delete write channel on destruction.
PChannelwriteChannel
 Channel for write operations.
BOOL writeHeaders
BOOL writePartHeaders
PTimeInterval writeTimeout
 Timeout for write operations.

Private Member Functions

 PCLASSINFO (PRFC822Channel, PIndirectChannel)

The documentation for this class was generated from the following files:

Generated by  Doxygen 1.6.0   Back to index