SOAP::MIME - Patch to SOAP::Lite to add attachment support. This module allows Perl clients to both compose messages with attachments, and to parse messages with attachments.


SOAP::Lite ( is a SOAP Toolkit that allows users to create SOAP clients and services. As of July 15, 2002, MIME support in SOAP::Lite was minimal. It could parse MIME formatted messages, but the data contained in those attachments was "lost."

This Perl module, patches SOAP::Lite so that users can not only send MIME formatted messages, but also gain access to those MIME attachments that are returned in a response.


6/12/2002 - Need to add ability to compose and send attachments. FIXED on 7/15/2002 7/15/2002 - Ability to process attachments on the server side has not yet been tested. 7/26/2002 - Reworked the parsing of the response to return an array of MIME::Entity objects which enables to user to more fully utilize the functionality contained within that module 3/18/2003 - Added server-side attachment support for HTTP



Used to retrieve MIME parts returned in a response. The subroutine parts() returns a reference to an array of MIME::Entity objects parsed out of a message.


Used to specify an array of MIME::Entities. These entities will be attached to the SOAP message.


Retrieving an Attachment

  use SOAP::Lite;
  use SOAP::MIME;

  my $soap = SOAP::Lite
  my $som = $soap->foo();

  foreach my $part (${$som->parts}) {
    print $part->stringify;

Sending an Attachment

  use SOAP::Lite;
  use SOAP::MIME;
  use MIME::Entity;

  my $ent = build MIME::Entity
    Type        => "image/gif",
    Encoding    => "base64",
    Path        => "somefile.gif",
    Filename    => "saveme.gif",
    Disposition => "attachment";

  my $som = SOAP::Lite
    ->parts([ $ent ])
    ->some_method(SOAP::Data->name("foo" => "bar"));

Responding (server-side) with an Attachment

  sub echo {
    my $self = shift;
    my $envelope = pop;
    my $ent = build MIME::Entity
        'Id'          => "<1234>",
        'Type'        => "text/xml",
        'Path'        => "examples/attachments/some2.xml",
        'Filename'    => "some2.xml",
        'Disposition' => "attachment";
    return SOAP::Data->name("foo" => $STRING),$ent;


SOAP::Lite, MIME::Entity