PEAR::SOAP includes classes and examples to handle SOAP Messages embedded in Email. These classes are used in relatively the same manor as a regular HTTP based SOAP Server, except that they need to be executed by a task scheduler or directly by the SMTP server itself.

This server reads data from STDIN and services the SOAP Message it receives. If you use QMail, you can create a .qmail-soapaddress file with '| /usr/bin/php /path/to/email_server.php' to service SOAP over SMTP requests.

SOAP Server that handles Email

<?php
require_once 'SOAP/Server/Email.php';

$server = new SOAP_Server_Email;

class SOAP_Example_Server {
    function echoString($inputString)
    {
        return $inputString;
    }
}

# read stdin
$fin = fopen('php://stdin','rb');
if (!$fin) exit(0);

$email = '';
while (!feof($fin) && $data = fread($fin, 8096)) {
  $email .= $data;
}

fclose($fin);

$soapclass = new SOAP_Example_Server();
$server->addObjectMap($soapclass,'urn:SOAP_Example_Server');
$server->service($email);
?>