Public Member Functions | Data Fields

ilBMFTransport_SMTP Class Reference

Inheritance diagram for ilBMFTransport_SMTP:
Collaboration diagram for ilBMFTransport_SMTP:

Public Member Functions

 ilBMFTransport_SMTP ($URL, $encoding='US-ASCII')
 ilBMFTransport_SMTP Constructor
 send ($msg, $options=array())
 Sends and receives SOAP data.
 setCredentials ($username, $password)
 Sets data for HTTP authentication, creates Authorization header.
 _validateUrl ()
 Validates url data passed to constructor.

Data Fields

 $credentials = ''
 $timeout = 4
 $urlparts = NULL
 $url = ''
 $incoming_payload = ''
 $_userAgent = SOAP_LIBRARY_NAME
 $encoding = SOAP_DEFAULT_ENCODING
 $host = '127.0.0.1'
 $port = 25
 $auth = NULL

Detailed Description

Definition at line 44 of file class.ilBMFTransport_SMTP.php.


Member Function Documentation

ilBMFTransport_SMTP::_validateUrl (  ) 

Validates url data passed to constructor.

Returns:
boolean private

Definition at line 191 of file class.ilBMFTransport_SMTP.php.

References ilBMFBase_Object::_raiseSoapFault().

Referenced by send().

    {
        if (!is_array($this->urlparts)) {
            $this->_raiseSoapFault("Unable to parse URL $url");
            return false;
        }
        if (!isset($this->urlparts['scheme']) ||
            strcasecmp($this->urlparts['scheme'], 'mailto') != 0) {
                $this->_raiseSoapFault("Unable to parse URL $url");
                return false;
        }
        if (!isset($this->urlparts['path'])) {
            $this->_raiseSoapFault("Unable to parse URL $url");
            return false;
        }
        return true;
    }

Here is the call graph for this function:

Here is the caller graph for this function:

ilBMFTransport_SMTP::ilBMFTransport_SMTP ( URL,
encoding = 'US-ASCII' 
)

ilBMFTransport_SMTP Constructor

Parameters:
string $URL mailto:address

public

Definition at line 64 of file class.ilBMFTransport_SMTP.php.

References $encoding, and ilBMFBase::ilBMFBase().

    {
        parent::ilBMFBase('SMTP');
        $this->encoding = $encoding;
        $this->urlparts = @parse_url($URL);
        $this->url = $URL;
    }

Here is the call graph for this function:

ilBMFTransport_SMTP::send ( msg,
options = array() 
)

Sends and receives SOAP data.

Parameters:
string $msg Outgoing POST data.
string $action SOAP Action header data.
integer $timeout Socket timeout, defaults to 0 or off.
Returns:
string Response data, minus HTTP headers. public

Definition at line 82 of file class.ilBMFTransport_SMTP.php.

References $namespace, $out, ilBMFBase::_makeEnvelope(), ilBMFBase_Object::_raiseSoapFault(), and _validateUrl().

    {
        $this->incoming_payload = '';
        $this->outgoing_payload = $msg;
        if (!$this->_validateUrl()) {
            return $this->fault;
        }
        if (!$options || !isset($options['from'])) {
            return $this->_raiseSoapFault('No From: address to send message with');
        }

        if (isset($options['host'])) $this->host = $options['host'];
        if (isset($options['port'])) $this->port = $options['port'];
        if (isset($options['auth'])) $this->auth = $options['auth'];
        if (isset($options['username'])) $this->username = $options['username'];
        if (isset($options['password'])) $this->password = $options['password'];

        $headers = array();
        $headers['From'] = $options['from'];
        $headers['X-Mailer'] = $this->_userAgent;
        $headers['MIME-Version'] = '1.0';
        $headers['Message-ID'] = md5(time()) . '.soap@' . $this->host;
        $headers['To'] = $this->urlparts['path'];
        if (isset($options['soapaction'])) {
            $headers['Soapaction'] = "\"{$options['soapaction']}\"";
        }

        if (isset($options['headers']))
            $headers = array_merge($headers, $options['headers']);

        // If the content type is already set, we assume that MIME encoding is
        // already done.
        if (isset($headers['Content-Type'])) {
            $out = $msg;
        } else {
            // Do a simple inline MIME encoding.
            $headers['Content-Disposition'] = 'inline';
            $headers['Content-Type'] = "text/xml; charset=\"$this->encoding\"";
            if (isset($options['transfer-encoding'])) {
                if (strcasecmp($options['transfer-encoding'], 'quoted-printable') == 0) {
                    $headers['Content-Transfer-Encoding'] = $options['transfer-encoding'];
                    $out = $msg;
                } elseif (strcasecmp($options['transfer-encoding'],'base64') == 0) {
                    $headers['Content-Transfer-Encoding'] = 'base64';
                    $out = chunk_split(base64_encode($msg), 76, "\n");
                } else {
                    return $this->_raiseSoapFault("Invalid Transfer Encoding: {$options['transfer-encoding']}");
                }
            } else {
                // Default to base64.
                $headers['Content-Transfer-Encoding'] = 'base64';
                $out = chunk_split(base64_encode($msg));
            }
        }

        $headers['Subject'] = isset($options['subject']) ? $options['subject'] : 'SOAP Message';

        foreach ($headers as $key => $value) {
            $header_text .= "$key: $value\n";
        }
        $this->outgoing_payload = $header_text . "\r\n" . $this->outgoing_payload;

        $mailer_params = array(
            'host' => $this->host,
            'port' => $this->port,
            'username' => $this->username,
            'password' => $this->password,
            'auth' => $this->auth
        );
        $mailer =& new Mail_smtp($mailer_params);
        $result = $mailer->send($this->urlparts['path'], $headers, $out);
        if (!PEAR::isError($result)) {
            $val =& new ilBMFValue('Message-ID', 'string', $headers['Message-ID']);
        } else {
            $sval[] =& new ilBMFValue('faultcode', 'QName', 'SOAP-ENV:Client');
            $sval[] =& new ilBMFValue('faultstring', 'string', "couldn't send SMTP message to {$this->urlparts['path']}");
            $val =& new ilBMFValue('Fault', 'Struct', $sval);
        }

        $mqname =& new QName($method, $namespace);
        $methodValue =& new ilBMFValue('Response', 'Struct', array($val));

        $this->incoming_payload = $this->_makeEnvelope($methodValue,
                                                       $this->headers,
                                                       $this->encoding);

        return $this->incoming_payload;
    }

Here is the call graph for this function:

ilBMFTransport_SMTP::setCredentials ( username,
password 
)

Sets data for HTTP authentication, creates Authorization header.

Parameters:
string $username Username.
string $password Response data, minus HTTP headers.

public

Definition at line 179 of file class.ilBMFTransport_SMTP.php.

    {
        $this->username = $username;
        $this->password = $password;
    }


Field Documentation

ilBMFTransport_SMTP::$_userAgent = SOAP_LIBRARY_NAME

Definition at line 52 of file class.ilBMFTransport_SMTP.php.

ilBMFTransport_SMTP::$auth = NULL

Definition at line 56 of file class.ilBMFTransport_SMTP.php.

ilBMFTransport_SMTP::$credentials = ''

Definition at line 47 of file class.ilBMFTransport_SMTP.php.

ilBMFTransport_SMTP::$encoding = SOAP_DEFAULT_ENCODING

Definition at line 53 of file class.ilBMFTransport_SMTP.php.

Referenced by ilBMFTransport_SMTP().

ilBMFTransport_SMTP::$host = '127.0.0.1'

Definition at line 54 of file class.ilBMFTransport_SMTP.php.

ilBMFTransport_SMTP::$incoming_payload = ''

Definition at line 51 of file class.ilBMFTransport_SMTP.php.

ilBMFTransport_SMTP::$port = 25

Definition at line 55 of file class.ilBMFTransport_SMTP.php.

ilBMFTransport_SMTP::$timeout = 4

Definition at line 48 of file class.ilBMFTransport_SMTP.php.

ilBMFTransport_SMTP::$url = ''

Definition at line 50 of file class.ilBMFTransport_SMTP.php.

ilBMFTransport_SMTP::$urlparts = NULL

Definition at line 49 of file class.ilBMFTransport_SMTP.php.


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