My company is currently deploying a web application which targets both the Nokia 7650 and SonyEricsson T68i and uses Nokia's MMS Java Library version 1.1 to encode and send MMS messages. Getting these two phones to display messages generated by the same code was tricky, so I thought I'd share two tips on constructing "cross-device" MMS messages.
Tip 1: Use content IDs to identify parts, not content locations.
The T68i appears to be very particular about the format of content locations in a SMIL part. We found that content locations like "A0", "A1", and "A000" would cause the phone to display a broken image when the message was viewed while messages with content locations like "foo.jpg" and "foo.gif" displayed correctly The phone did not appear to have the same difficulty with content IDs, so we switched to using <A0> and src="cid:A0". Whether you generate the SMIL part as we do or just use a canned .smil file, always specify your content parts with content ID.
Tip 2: Remove any <?xml version="1.0"?> declarations from your SMIL
The Nokia 7650 absolutely refuses to display MMS messages if the SMIL part contains an XML declaration before the <smil> tag. If anything appears before <smil>, the phone will show the infamous "display as objects" error message. This is unfortunate for developers who are generating SMIL using standard tools because most Java XML libraries require the XML declaration. Until the day when the phone firmware contains a W3C-compliant XML parser, the solution to this problem is to always strip out anything before the <smil> tag. We found that the resulting SMIL will work on both the T68i and the 7650.
Hope these tips help!