mms2r 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. data/History.txt +4 -0
  2. data/Manifest.txt +54 -0
  3. data/README.txt +81 -0
  4. data/Rakefile +30 -0
  5. data/conf/mms2r_cingularmedia_transform.yml +6 -0
  6. data/conf/mms2r_sprintmedia_ignore.yml +10 -0
  7. data/conf/mms2r_tmobilemedia_ignore.yml +17 -0
  8. data/conf/mms2r_verizonmedia_ignore.yml +3 -0
  9. data/lib/mms2r.rb +3 -0
  10. data/lib/mms2r/cingular_media.rb +11 -0
  11. data/lib/mms2r/media.rb +345 -0
  12. data/lib/mms2r/mmode_media.rb +13 -0
  13. data/lib/mms2r/sprint_media.rb +50 -0
  14. data/lib/mms2r/tmobile_media.rb +11 -0
  15. data/lib/mms2r/verizon_media.rb +11 -0
  16. data/lib/mms2r/version.rb +12 -0
  17. data/lib/vendor/text/format.rb +1466 -0
  18. data/lib/vendor/tmail.rb +3 -0
  19. data/lib/vendor/tmail/address.rb +242 -0
  20. data/lib/vendor/tmail/attachments.rb +39 -0
  21. data/lib/vendor/tmail/base64.rb +71 -0
  22. data/lib/vendor/tmail/config.rb +69 -0
  23. data/lib/vendor/tmail/encode.rb +467 -0
  24. data/lib/vendor/tmail/facade.rb +552 -0
  25. data/lib/vendor/tmail/header.rb +914 -0
  26. data/lib/vendor/tmail/info.rb +35 -0
  27. data/lib/vendor/tmail/loader.rb +1 -0
  28. data/lib/vendor/tmail/mail.rb +447 -0
  29. data/lib/vendor/tmail/mailbox.rb +433 -0
  30. data/lib/vendor/tmail/mbox.rb +1 -0
  31. data/lib/vendor/tmail/net.rb +280 -0
  32. data/lib/vendor/tmail/obsolete.rb +135 -0
  33. data/lib/vendor/tmail/parser.rb +1522 -0
  34. data/lib/vendor/tmail/port.rb +377 -0
  35. data/lib/vendor/tmail/quoting.rb +131 -0
  36. data/lib/vendor/tmail/scanner.rb +41 -0
  37. data/lib/vendor/tmail/scanner_r.rb +263 -0
  38. data/lib/vendor/tmail/stringio.rb +277 -0
  39. data/lib/vendor/tmail/tmail.rb +1 -0
  40. data/lib/vendor/tmail/utils.rb +238 -0
  41. data/test/files/dot.jpg +0 -0
  42. data/test/files/sprint-image-01.mail +195 -0
  43. data/test/files/sprint-text-01.mail +8 -0
  44. data/test/files/sprint-video-01.mail +195 -0
  45. data/test/files/sprint.mov +0 -0
  46. data/test/files/verizon-image-01.mail +815 -0
  47. data/test/files/verizon-text-01.mail +11 -0
  48. data/test/files/verizon-video-01.mail +336 -0
  49. data/test/test_mms2r_cingular.rb +52 -0
  50. data/test/test_mms2r_media.rb +311 -0
  51. data/test/test_mms2r_mmode.rb +52 -0
  52. data/test/test_mms2r_sprint.rb +154 -0
  53. data/test/test_mms2r_tmobile.rb +169 -0
  54. data/test/test_mms2r_verizon.rb +74 -0
  55. metadata +130 -0
@@ -0,0 +1 @@
1
+ require 'tmail'
@@ -0,0 +1,238 @@
1
+ #
2
+ # utils.rb
3
+ #
4
+ #--
5
+ # Copyright (c) 1998-2003 Minero Aoki <aamine@loveruby.net>
6
+ #
7
+ # Permission is hereby granted, free of charge, to any person obtaining
8
+ # a copy of this software and associated documentation files (the
9
+ # "Software"), to deal in the Software without restriction, including
10
+ # without limitation the rights to use, copy, modify, merge, publish,
11
+ # distribute, sublicense, and/or sell copies of the Software, and to
12
+ # permit persons to whom the Software is furnished to do so, subject to
13
+ # the following conditions:
14
+ #
15
+ # The above copyright notice and this permission notice shall be
16
+ # included in all copies or substantial portions of the Software.
17
+ #
18
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
22
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
23
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
+ #
26
+ # Note: Originally licensed under LGPL v2+. Using MIT license for Rails
27
+ # with permission of Minero Aoki.
28
+ #++
29
+
30
+ module TMail
31
+
32
+ class SyntaxError < StandardError; end
33
+
34
+
35
+ def TMail.new_boundary
36
+ 'mimepart_' + random_tag
37
+ end
38
+
39
+ def TMail.new_message_id( fqdn = nil )
40
+ fqdn ||= ::Socket.gethostname
41
+ "<#{random_tag()}@#{fqdn}.tmail>"
42
+ end
43
+
44
+ def TMail.random_tag
45
+ @uniq += 1
46
+ t = Time.now
47
+ sprintf('%x%x_%x%x%d%x',
48
+ t.to_i, t.tv_usec,
49
+ $$, Thread.current.object_id, @uniq, rand(255))
50
+ end
51
+ private_class_method :random_tag
52
+
53
+ @uniq = 0
54
+
55
+
56
+ module TextUtils
57
+
58
+ aspecial = '()<>[]:;.\\,"'
59
+ tspecial = '()<>[];:\\,"/?='
60
+ lwsp = " \t\r\n"
61
+ control = '\x00-\x1f\x7f-\xff'
62
+
63
+ ATOM_UNSAFE = /[#{Regexp.quote aspecial}#{control}#{lwsp}]/n
64
+ PHRASE_UNSAFE = /[#{Regexp.quote aspecial}#{control}]/n
65
+ TOKEN_UNSAFE = /[#{Regexp.quote tspecial}#{control}#{lwsp}]/n
66
+ CONTROL_CHAR = /[#{control}]/n
67
+
68
+ def atom_safe?( str )
69
+ not ATOM_UNSAFE === str
70
+ end
71
+
72
+ def quote_atom( str )
73
+ (ATOM_UNSAFE === str) ? dquote(str) : str
74
+ end
75
+
76
+ def quote_phrase( str )
77
+ (PHRASE_UNSAFE === str) ? dquote(str) : str
78
+ end
79
+
80
+ def token_safe?( str )
81
+ not TOKEN_UNSAFE === str
82
+ end
83
+
84
+ def quote_token( str )
85
+ (TOKEN_UNSAFE === str) ? dquote(str) : str
86
+ end
87
+
88
+ def dquote( str )
89
+ '"' + str.gsub(/["\\]/n) {|s| '\\' + s } + '"'
90
+ end
91
+ private :dquote
92
+
93
+
94
+ def join_domain( arr )
95
+ arr.map {|i|
96
+ if /\A\[.*\]\z/ === i
97
+ i
98
+ else
99
+ quote_atom(i)
100
+ end
101
+ }.join('.')
102
+ end
103
+
104
+
105
+ ZONESTR_TABLE = {
106
+ 'jst' => 9 * 60,
107
+ 'eet' => 2 * 60,
108
+ 'bst' => 1 * 60,
109
+ 'met' => 1 * 60,
110
+ 'gmt' => 0,
111
+ 'utc' => 0,
112
+ 'ut' => 0,
113
+ 'nst' => -(3 * 60 + 30),
114
+ 'ast' => -4 * 60,
115
+ 'edt' => -4 * 60,
116
+ 'est' => -5 * 60,
117
+ 'cdt' => -5 * 60,
118
+ 'cst' => -6 * 60,
119
+ 'mdt' => -6 * 60,
120
+ 'mst' => -7 * 60,
121
+ 'pdt' => -7 * 60,
122
+ 'pst' => -8 * 60,
123
+ 'a' => -1 * 60,
124
+ 'b' => -2 * 60,
125
+ 'c' => -3 * 60,
126
+ 'd' => -4 * 60,
127
+ 'e' => -5 * 60,
128
+ 'f' => -6 * 60,
129
+ 'g' => -7 * 60,
130
+ 'h' => -8 * 60,
131
+ 'i' => -9 * 60,
132
+ # j not use
133
+ 'k' => -10 * 60,
134
+ 'l' => -11 * 60,
135
+ 'm' => -12 * 60,
136
+ 'n' => 1 * 60,
137
+ 'o' => 2 * 60,
138
+ 'p' => 3 * 60,
139
+ 'q' => 4 * 60,
140
+ 'r' => 5 * 60,
141
+ 's' => 6 * 60,
142
+ 't' => 7 * 60,
143
+ 'u' => 8 * 60,
144
+ 'v' => 9 * 60,
145
+ 'w' => 10 * 60,
146
+ 'x' => 11 * 60,
147
+ 'y' => 12 * 60,
148
+ 'z' => 0 * 60
149
+ }
150
+
151
+ def timezone_string_to_unixtime( str )
152
+ if m = /([\+\-])(\d\d?)(\d\d)/.match(str)
153
+ sec = (m[2].to_i * 60 + m[3].to_i) * 60
154
+ m[1] == '-' ? -sec : sec
155
+ else
156
+ min = ZONESTR_TABLE[str.downcase] or
157
+ raise SyntaxError, "wrong timezone format '#{str}'"
158
+ min * 60
159
+ end
160
+ end
161
+
162
+
163
+ WDAY = %w( Sun Mon Tue Wed Thu Fri Sat TMailBUG )
164
+ MONTH = %w( TMailBUG Jan Feb Mar Apr May Jun
165
+ Jul Aug Sep Oct Nov Dec TMailBUG )
166
+
167
+ def time2str( tm )
168
+ # [ruby-list:7928]
169
+ gmt = Time.at(tm.to_i)
170
+ gmt.gmtime
171
+ offset = tm.to_i - Time.local(*gmt.to_a[0,6].reverse).to_i
172
+
173
+ # DO NOT USE strftime: setlocale() breaks it
174
+ sprintf '%s, %s %s %d %02d:%02d:%02d %+.2d%.2d',
175
+ WDAY[tm.wday], tm.mday, MONTH[tm.month],
176
+ tm.year, tm.hour, tm.min, tm.sec,
177
+ *(offset / 60).divmod(60)
178
+ end
179
+
180
+
181
+ MESSAGE_ID = /<[^\@>]+\@[^>\@]+>/
182
+
183
+ def message_id?( str )
184
+ MESSAGE_ID === str
185
+ end
186
+
187
+
188
+ MIME_ENCODED = /=\?[^\s?=]+\?[QB]\?[^\s?=]+\?=/i
189
+
190
+ def mime_encoded?( str )
191
+ MIME_ENCODED === str
192
+ end
193
+
194
+
195
+ def decode_params( hash )
196
+ new = Hash.new
197
+ encoded = nil
198
+ hash.each do |key, value|
199
+ if m = /\*(?:(\d+)\*)?\z/.match(key)
200
+ ((encoded ||= {})[m.pre_match] ||= [])[(m[1] || 0).to_i] = value
201
+ else
202
+ new[key] = to_kcode(value)
203
+ end
204
+ end
205
+ if encoded
206
+ encoded.each do |key, strings|
207
+ new[key] = decode_RFC2231(strings.join(''))
208
+ end
209
+ end
210
+
211
+ new
212
+ end
213
+
214
+ NKF_FLAGS = {
215
+ 'EUC' => '-e -m',
216
+ 'SJIS' => '-s -m'
217
+ }
218
+
219
+ def to_kcode( str )
220
+ flag = NKF_FLAGS[$KCODE] or return str
221
+ NKF.nkf(flag, str)
222
+ end
223
+
224
+ RFC2231_ENCODED = /\A(?:iso-2022-jp|euc-jp|shift_jis|us-ascii)?'[a-z]*'/in
225
+
226
+ def decode_RFC2231( str )
227
+ m = RFC2231_ENCODED.match(str) or return str
228
+ begin
229
+ NKF.nkf(NKF_FLAGS[$KCODE],
230
+ m.post_match.gsub(/%[\da-f]{2}/in) {|s| s[1,2].hex.chr })
231
+ rescue
232
+ m.post_match.gsub(/%[\da-f]{2}/in, "")
233
+ end
234
+ end
235
+
236
+ end
237
+
238
+ end
Binary file
@@ -0,0 +1,195 @@
1
+ Message-ID: <01234567.9876543210987.JavaMail.jkdos@lalal09>
2
+ From: "someuser@pm.sprint.com" <someuser@pm.sprint.com>
3
+ To: tommytutone@example.com
4
+ Subject: You have new Picture Mail!
5
+ MIME-Version: 1.0
6
+ Content-Type: multipart/alternative;
7
+ boundary="----=_Part_012345_67890123.4567890123456"
8
+ X-Priority: 3
9
+ X-MSMail-Priority: Normal
10
+ Importance: Normal
11
+
12
+ ------=_Part_012345_67890123.4567890123456
13
+ Content-Type: text/plain; charset=us-ascii
14
+ Content-Transfer-Encoding: 7bit
15
+
16
+ You have new Picture Mail!
17
+
18
+ Click Go/View to see now.
19
+ http://pictures.sprintpcs.com/?mivt=helloworld0123456789&shareName=MMS
20
+
21
+ _abcedef
22
+
23
+
24
+ ------=_Part_012345_67890123.4567890123456
25
+ Content-Type: text/html
26
+ Content-Transfer-Encoding: 7bit
27
+
28
+ <html>
29
+ <head><title>You have new Picture Mail!</title>
30
+ <!-- lsPictureMail-Share-helloworld0123456789-comment
31
+ &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF&#45;8&quot;?&gt;
32
+ &lt;shareMessage&gt;
33
+ &lt;messageContents type=&quot;PICTURE&quot;&gt;
34
+ &lt;messageText&gt;&lt;/messageText&gt;
35
+ &lt;mediaItems&gt;
36
+ &lt;mediaItem id=&quot;1&quot;&gt;
37
+ &lt;title&gt;&lt;/title&gt;
38
+ &amp;lt;url&amp;gt;http://pictures.sprintpcs.com/getMMBOXMessageMedia?id=Xw1004H8sLv6S3x76lVPYvc9HWuygho0mqG1a5IEKWLR8s8O0GEqXAmk5gW%2FZUWGqyw0fwJJvr7U%0AtWtQs5%2FZA7tmYNq7KKkBMqlL64JVNH%2BGkNKbb8WqPL%2FsrHZdYUVet3SRzN1GfrfUo%2BpWfjCBBg%3D%3D%0A&amp;lt;/url&amp;gt;
39
+
40
+ &lt;urlExpiration&gt;2007&#45;03&#45;11T21:14:27Z&lt;/urlExpiration&gt;
41
+ &lt;/mediaItem&gt;
42
+ &lt;/mediaItems&gt;
43
+ &lt;/messageContents&gt;
44
+ &lt;/shareMessage&gt;
45
+
46
+ -->
47
+ <!-- lsPictureMail-UserInfo-helloworld0123456789-comment
48
+ &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF&#45;8&quot;?&gt;
49
+ &lt;UserInfo timestamp=&quot;2007&#45;03&#45;04T21:14:27.96+00:00&quot; originating_from_address=&quot;someuser@pm.sprint.com&quot;&gt;&lt;credential name=&quot;MDN&quot;&gt;2068509247&lt;/credential&gt;&lt;/UserInfo&gt;
50
+ -->
51
+ </head>
52
+ <body marginheight="0" marginwidth="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0">
53
+ <table border="0" width="100%" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" >
54
+ <tr>
55
+ <td VALIGN="top" colspan="2" width="100%">
56
+ <table border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#FFE100">
57
+ <tr>
58
+ <td><a href="http://www.sprintpcs.com"><img src="http://pictures.sprintpcs.com/retailers/PCSNEXTEL/images/logos/togetherWithNextel.gif" alt="" border="0" /></a></td>
59
+ </tr>
60
+ </table>
61
+ </td>
62
+ </tr>
63
+ <tr>
64
+ <td VALIGN="top" colspan="2">
65
+ <table border="0" cellpadding="0" cellspacing="0" width="590" bgcolor="#FFFFFF">
66
+ <tr>
67
+ <td><br/><p><img src="http://pictures.sprintpcs.com/images/x.gif" border="0" width="10"/><font face="trebuchet ms, Helvetica, Arial, Verdana" size="2"><b>You have a Picture Mail from someuser@pm.sprint.com</b></font><br/><br/></p></td>
68
+ </tr>
69
+ </table>
70
+ </td>
71
+ </tr>
72
+ <tr>
73
+ <td colspan="2">
74
+ <table border="0" width="590" cellpadding="0" cellspacing="0">
75
+ <tr>
76
+ <td width="10">&nbsp;</td>
77
+ <td width="280" valign="top">
78
+ <table border="0" cellpadding="0" style="border:1px solid #9C9A9C;">
79
+ <tr>
80
+ <td>
81
+ <table border="0" bgcolor="#ffffff" cellpadding="0" cellspacing="7" style="table-layout:fixed">
82
+ <tr>
83
+ <td align="center">
84
+ <img src="http://localhost:99163/simpleimage/RECIPIENT/000_0123a01234567890_1/2?inviteToken=helloworld0123456789&amp;limitsize=258,258&amp;outquality=90&amp;squareoutput=255,255,255&amp;ext=.jpg&amp;iconifyVideo=true&amp;wm=1"/>
85
+ </td>
86
+ </tr>
87
+ </table>
88
+ </td>
89
+ </tr>
90
+ </table>
91
+ </td>
92
+ <td width="20">&nbsp;</td>
93
+ <td VALIGN="top" align="right" width="280">
94
+ <table border="0" cellpadding="0" cellspacing="0" width="280" style="table-layout:fixed">
95
+ <tr>
96
+ <td><p><font face="trebuchet ms, Helvetica, Arial, Verdana" size="2"><b>Message:</b></font></p></td>
97
+ </tr>
98
+ <tr>
99
+ <td><pre style="overflow:auto; font:normal 10pt trebuchet ms; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"></pre></td>
100
+ </tr>
101
+ <tr>
102
+ <td><img src="http://pictures.sprintpcs.com/images/x.gif" border="0" height="15"/></td>
103
+ </tr>
104
+ <tr>
105
+ <td width="280">
106
+ <div style="padding-left:10px; padding-top:4px; padding-bottom:4px; color:white; background-color:#59639C; font: bold 10pt trebuchet ms" width="280">
107
+ Options
108
+ </div>
109
+ <div style="padding:10px; background-color:#f1f1f1; font: normal 10pt trebuchet ms" width="280">
110
+ <a target="_blank" style="color: #148AB2;" href="http://pictures.sprintpcs.com/share.do?invite=helloworld0123456789&amp;shareName=MMS&amp;messageState=RETRIEVED">View Picture</a><br/>
111
+ <a target="_blank" style="color: #148AB2;" href="http://pictures.sprintpcs.com/share.do?invite=helloworld0123456789&amp;shareName=PRINT">Order Prints and Gifts</a><br/>
112
+ <a target="_blank" style="color: #148AB2;" href="http://pictures.sprintpcs.com/share.do?invite=helloworld0123456789&amp;shareName=REPLY">Reply to Sender</a><br/>
113
+ <a target="_blank" style="color: #148AB2;" href="http://pictures.sprintpcs.com/share.do?invite=helloworld0123456789&amp;shareName=REPLYTOALL">Reply to All</a><br/>
114
+ <a target="_blank" style="color: #148AB2;" href="http://pictures.sprintpcs.com/share.do?invite=helloworld0123456789&amp;shareName=FORWARD">Forward</a><br/><br/>
115
+ Send and receive Pictures and Videos through Picture Mail<sup>SM</sup>. For more information go to <a target="_blank" style="color: #148AB2;" href="http://www.sprint.com/picturemail">www.sprint.com/picturemail.</a>
116
+ </div>
117
+ </td>
118
+ </tr>
119
+ </table>
120
+ </td>
121
+ </tr>
122
+ </table>
123
+ </td>
124
+ </tr>
125
+ <tr>
126
+ <td colspan="2">
127
+ <img src="http://pictures.sprintpcs.com/images/x.gif" width="5" height="15"/>
128
+ </td>
129
+ </tr>
130
+ <tr>
131
+ <td align="left" colspan="2" width="590">
132
+ <table cellpadding="0" cellspacing="0" align="left" bgcolor="#FFFFFF">
133
+ <tr>
134
+ <td width="10">&nbsp;</td>
135
+ <td width="580">
136
+ <table cellpadding="0" cellspacing="0" align="center" border="0" bgcolor="#FFFFFF">
137
+ <tr>
138
+ <!-- AdJuggler 5.0 request
139
+ Ad Spot: email_picture-mail-invitation_1_120x85
140
+ Channel: Undefined
141
+ Ad Dimension: 120x85
142
+ Category: Undefined
143
+ Sub-category: Undefined
144
+ -->
145
+ <td width="120"><a href="http://banners.pictures.sprintpcs.com/servlet/ajrotator/361/0/clickCGI?zone=1"><img src="http://banners.pictures.sprintpcs.com/servlet/ajrotator/361/0/viewCGI?zone=1&amp;dim=135" border="0"/></a></td>
146
+ <td width="30"></td>
147
+ <!-- AdJuggler 5.0 request
148
+ Ad Spot: email_picture-mail-invitation_2_120x85
149
+ Channel: Undefined
150
+ Ad Dimension: 120x85
151
+ Category: Undefined
152
+ Sub-category: Undefined
153
+ -->
154
+ <td width="120"><a href="http://banners.pictures.sprintpcs.com/servlet/ajrotator/362/0/clickCGI?zone=1"><img src="http://banners.pictures.sprintpcs.com/servlet/ajrotator/362/0/viewCGI?zone=1&amp;dim=135" border="0"/></a></td>
155
+ <td width="30"></td>
156
+ <!-- AdJuggler 5.0 request
157
+ Ad Spot: email_picture-mail-invitation_3_120x85
158
+ Channel: Undefined
159
+ Ad Dimension: 120x85
160
+ Category: Undefined
161
+ Sub-category: Undefined
162
+ -->
163
+ <td width="120"><a href="http://banners.pictures.sprintpcs.com/servlet/ajrotator/363/0/clickCGI?zone=1"><img src="http://banners.pictures.sprintpcs.com/servlet/ajrotator/363/0/viewCGI?zone=1&amp;dim=135" border="0"/></a></td>
164
+ </tr>
165
+ </table>
166
+ </td>
167
+ </tr>
168
+ </table>
169
+ </td>
170
+ </tr>
171
+ <tr>
172
+ <td VALIGN="top" colspan="2" width="590">
173
+ <img src="http://pictures.sprintpcs.com/images/x.gif" height="5"/>
174
+ </td>
175
+ </tr>
176
+ <tr>
177
+ <td VALIGN="top" colspan="2" width="100%">
178
+ <table width="100%" border="0" cellspacing="0" cellpadding="0">
179
+ <tr>
180
+ <td bgcolor="#f1f1f1" align="left"><img src="http://pictures.sprintpcs.com/images/x.gif" border="0" width="385" height="15"/><span style="font-family:trebuchet ms, Helvetica, Arial, Verdana; Font-size: 11px; Color: #000000">&#169; 2007 Sprint Nextel. All rights reserved.</span></td>
181
+ </tr>
182
+ <tr>
183
+ <td bgcolor="#f1f1f1" width="100%"><img src="http://pictures.sprintpcs.com/images/x.gif" border="0" width="20" height="5"/><a href="http://www.verisign.com"><img src="http://pictures.sprintpcs.com/retailers/PCSNEXTEL/images/logos/verisign.jpg" alt="VeriSign's Home Page" border="0" /></a></td>
184
+ </tr>
185
+ <tr>
186
+ <td bgcolor="#f1f1f1" width="100%"><img src="http://pictures.sprintpcs.com/images/x.gif" border="0" height="10"/></td>
187
+ </tr>
188
+ </table>
189
+ </td>
190
+ </tr>
191
+ </table>
192
+ </body>
193
+ </html><!-- picture_mail_arrived -->
194
+
195
+ ------=_Part_012345_67890123.4567890123456--
@@ -0,0 +1,8 @@
1
+ From:2068675309@messaging.sprintpcs.com
2
+ To:tommytutone@example.com
3
+ Subject:
4
+ X-OPWV-Extra-Message-Type:MO
5
+ Message-Id: <01234567890123.01234ABCDE@mx.messaging.sprintpcs.com>
6
+ Date: Wed, 15 Jan 2007 10:26:08 -0600 (CST)
7
+
8
+ hello world
@@ -0,0 +1,195 @@
1
+ Message-ID: <01234567.9876543210980.JavaMail.jkdos@lalal10>
2
+ From: "someuser@pm.sprint.com" <someuser@pm.sprint.com>
3
+ To: tommytutone@example.com
4
+ Subject: You have new Picture Mail!
5
+ MIME-Version: 1.0
6
+ Content-Type: multipart/alternative;
7
+ boundary="----=_Part_012345_67890123.4567890123456"
8
+ X-Priority: 3
9
+ X-MSMail-Priority: Normal
10
+ Importance: Normal
11
+
12
+ ------=_Part_012345_67890123.4567890123456
13
+ Content-Type: text/plain; charset=us-ascii
14
+ Content-Transfer-Encoding: 7bit
15
+
16
+ You have new Video Mail!
17
+
18
+ Click Go/View to see now.
19
+ http://pictures.sprintpcs.com/?mivt=helloworld0123456789&shareName=MMS
20
+
21
+ _abcedef
22
+
23
+
24
+ ------=_Part_012345_67890123.4567890123456
25
+ Content-Type: text/html
26
+ Content-Transfer-Encoding: 7bit
27
+
28
+ <html>
29
+ <head><title>You have new Picture Mail!</title>
30
+ <!-- lsPictureMail-Share-helloworld0123456789-comment
31
+ &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF&#45;8&quot;?&gt;
32
+ &lt;shareMessage&gt;
33
+ &lt;messageContents type=&quot;PICTURE&quot;&gt;
34
+ &lt;messageText&gt;&lt;/messageText&gt;
35
+ &lt;mediaItems&gt;
36
+ &lt;mediaItem id=&quot;1&quot;&gt;
37
+ &lt;title&gt;&lt;/title&gt;
38
+ &amp;lt;url&amp;gt;http://pictures.sprintpcs.com/getMMBOXMessageMedia?id=Xw1004H8sLv6S3x76lVPYvc9HWuygho0mqG1a5IEKWLR8s8O0GEqXAmk5gW%2FZUWGqyw0fwJJvr7U%0AtWtQs5%2FZA7tmYNq7KKkBMqlL64JVNH%2BGkNKbb8WqPL%2FsrHZdYUVet3SRzN1GfrfUo%2BpWfjCBBg%3D%3D%0A&amp;lt;/url&amp;gt;
39
+
40
+ &lt;urlExpiration&gt;2007&#45;03&#45;11T21:14:27Z&lt;/urlExpiration&gt;
41
+ &lt;/mediaItem&gt;
42
+ &lt;/mediaItems&gt;
43
+ &lt;/messageContents&gt;
44
+ &lt;/shareMessage&gt;
45
+
46
+ -->
47
+ <!-- lsPictureMail-UserInfo-helloworld0123456789-comment
48
+ &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF&#45;8&quot;?&gt;
49
+ &lt;UserInfo timestamp=&quot;2007&#45;03&#45;04T21:14:27.96+00:00&quot; originating_from_address=&quot;someuser@pm.sprint.com&quot;&gt;&lt;credential name=&quot;MDN&quot;&gt;2068509247&lt;/credential&gt;&lt;/UserInfo&gt;
50
+ -->
51
+ </head>
52
+ <body marginheight="0" marginwidth="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0">
53
+ <table border="0" width="100%" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" >
54
+ <tr>
55
+ <td VALIGN="top" colspan="2" width="100%">
56
+ <table border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#FFE100">
57
+ <tr>
58
+ <td><a href="http://www.sprintpcs.com"><img src="http://pictures.sprintpcs.com/retailers/PCSNEXTEL/images/logos/togetherWithNextel.gif" alt="" border="0" /></a></td>
59
+ </tr>
60
+ </table>
61
+ </td>
62
+ </tr>
63
+ <tr>
64
+ <td VALIGN="top" colspan="2">
65
+ <table border="0" cellpadding="0" cellspacing="0" width="590" bgcolor="#FFFFFF">
66
+ <tr>
67
+ <td><br/><p><img src="http://pictures.sprintpcs.com/images/x.gif" border="0" width="10"/><font face="trebuchet ms, Helvetica, Arial, Verdana" size="2"><b>You have a Video Mail from someuser@pm.sprint.com</b></font><br/><br/></p></td>
68
+ </tr>
69
+ </table>
70
+ </td>
71
+ </tr>
72
+ <tr>
73
+ <td colspan="2">
74
+ <table border="0" width="590" cellpadding="0" cellspacing="0">
75
+ <tr>
76
+ <td width="10">&nbsp;</td>
77
+ <td width="280" valign="top">
78
+ <table border="0" cellpadding="0" style="border:1px solid #9C9A9C;">
79
+ <tr>
80
+ <td>
81
+ <table border="0" bgcolor="#ffffff" cellpadding="0" cellspacing="7" style="table-layout:fixed">
82
+ <tr>
83
+ <td align="center">
84
+ <img src="http://localhost:99163/simplevideo/RECIPIENT/000_0123a01234567895_1/2?inviteToken=helloworld0123456789&amp;iconifyVideo=true&amp;wm=1&amp;limitsize=125,125&amp;outquality=90&amp;squareoutput=255,255,255&amp;ext=.jpg&amp;iconifyVideo=true&amp;wm=1"/>
85
+ </td>
86
+ </tr>
87
+ </table>
88
+ </td>
89
+ </tr>
90
+ </table>
91
+ </td>
92
+ <td width="20">&nbsp;</td>
93
+ <td VALIGN="top" align="right" width="280">
94
+ <table border="0" cellpadding="0" cellspacing="0" width="280" style="table-layout:fixed">
95
+ <tr>
96
+ <td><p><font face="trebuchet ms, Helvetica, Arial, Verdana" size="2"><b>Message:</b></font></p></td>
97
+ </tr>
98
+ <tr>
99
+ <td><pre style="overflow:auto; font:normal 10pt trebuchet ms; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"></pre></td>
100
+ </tr>
101
+ <tr>
102
+ <td><img src="http://pictures.sprintpcs.com/images/x.gif" border="0" height="15"/></td>
103
+ </tr>
104
+ <tr>
105
+ <td width="280">
106
+ <div style="padding-left:10px; padding-top:4px; padding-bottom:4px; color:white; background-color:#59639C; font: bold 10pt trebuchet ms" width="280">
107
+ Options
108
+ </div>
109
+ <div style="padding:10px; background-color:#f1f1f1; font: normal 10pt trebuchet ms" width="280">
110
+ <a target="_blank" style="color: #148AB2;" href="http://pictures.sprintpcs.com/share.do?invite=helloworld0123456789&amp;shareName=MMS&amp;messageState=RETRIEVED">View Video</a><br/>
111
+ <a target="_blank" style="color: #148AB2;" href="http://pictures.sprintpcs.com/share.do?invite=helloworld0123456789&amp;shareName=PRINT">Order Prints and Gifts</a><br/>
112
+ <a target="_blank" style="color: #148AB2;" href="http://pictures.sprintpcs.com/share.do?invite=helloworld0123456789&amp;shareName=REPLY">Reply to Sender</a><br/>
113
+ <a target="_blank" style="color: #148AB2;" href="http://pictures.sprintpcs.com/share.do?invite=helloworld0123456789&amp;shareName=REPLYTOALL">Reply to All</a><br/>
114
+ <a target="_blank" style="color: #148AB2;" href="http://pictures.sprintpcs.com/share.do?invite=helloworld0123456789&amp;shareName=FORWARD">Forward</a><br/><br/>
115
+ Send and receive Pictures and Videos through Picture Mail<sup>SM</sup>. For more information go to <a target="_blank" style="color: #148AB2;" href="http://www.sprint.com/picturemail">www.sprint.com/picturemail.</a>
116
+ </div>
117
+ </td>
118
+ </tr>
119
+ </table>
120
+ </td>
121
+ </tr>
122
+ </table>
123
+ </td>
124
+ </tr>
125
+ <tr>
126
+ <td colspan="2">
127
+ <img src="http://pictures.sprintpcs.com/images/x.gif" width="5" height="15"/>
128
+ </td>
129
+ </tr>
130
+ <tr>
131
+ <td align="left" colspan="2" width="590">
132
+ <table cellpadding="0" cellspacing="0" align="left" bgcolor="#FFFFFF">
133
+ <tr>
134
+ <td width="10">&nbsp;</td>
135
+ <td width="580">
136
+ <table cellpadding="0" cellspacing="0" align="center" border="0" bgcolor="#FFFFFF">
137
+ <tr>
138
+ <!-- AdJuggler 5.0 request
139
+ Ad Spot: email_picture-mail-invitation_1_120x85
140
+ Channel: Undefined
141
+ Ad Dimension: 120x85
142
+ Category: Undefined
143
+ Sub-category: Undefined
144
+ -->
145
+ <td width="120"><a href="http://banners.pictures.sprintpcs.com/servlet/ajrotator/361/0/clickCGI?zone=1"><img src="http://banners.pictures.sprintpcs.com/servlet/ajrotator/361/0/viewCGI?zone=1&amp;dim=135" border="0"/></a></td>
146
+ <td width="30"></td>
147
+ <!-- AdJuggler 5.0 request
148
+ Ad Spot: email_picture-mail-invitation_2_120x85
149
+ Channel: Undefined
150
+ Ad Dimension: 120x85
151
+ Category: Undefined
152
+ Sub-category: Undefined
153
+ -->
154
+ <td width="120"><a href="http://banners.pictures.sprintpcs.com/servlet/ajrotator/362/0/clickCGI?zone=1"><img src="http://banners.pictures.sprintpcs.com/servlet/ajrotator/362/0/viewCGI?zone=1&amp;dim=135" border="0"/></a></td>
155
+ <td width="30"></td>
156
+ <!-- AdJuggler 5.0 request
157
+ Ad Spot: email_picture-mail-invitation_3_120x85
158
+ Channel: Undefined
159
+ Ad Dimension: 120x85
160
+ Category: Undefined
161
+ Sub-category: Undefined
162
+ -->
163
+ <td width="120"><a href="http://banners.pictures.sprintpcs.com/servlet/ajrotator/363/0/clickCGI?zone=1"><img src="http://banners.pictures.sprintpcs.com/servlet/ajrotator/363/0/viewCGI?zone=1&amp;dim=135" border="0"/></a></td>
164
+ </tr>
165
+ </table>
166
+ </td>
167
+ </tr>
168
+ </table>
169
+ </td>
170
+ </tr>
171
+ <tr>
172
+ <td VALIGN="top" colspan="2" width="590">
173
+ <img src="http://pictures.sprintpcs.com/images/x.gif" height="5"/>
174
+ </td>
175
+ </tr>
176
+ <tr>
177
+ <td VALIGN="top" colspan="2" width="100%">
178
+ <table width="100%" border="0" cellspacing="0" cellpadding="0">
179
+ <tr>
180
+ <td bgcolor="#f1f1f1" align="left"><img src="http://pictures.sprintpcs.com/images/x.gif" border="0" width="385" height="15"/><span style="font-family:trebuchet ms, Helvetica, Arial, Verdana; Font-size: 11px; Color: #000000">&#169; 2007 Sprint Nextel. All rights reserved.</span></td>
181
+ </tr>
182
+ <tr>
183
+ <td bgcolor="#f1f1f1" width="100%"><img src="http://pictures.sprintpcs.com/images/x.gif" border="0" width="20" height="5"/><a href="http://www.verisign.com"><img src="http://pictures.sprintpcs.com/retailers/PCSNEXTEL/images/logos/verisign.jpg" alt="VeriSign's Home Page" border="0" /></a></td>
184
+ </tr>
185
+ <tr>
186
+ <td bgcolor="#f1f1f1" width="100%"><img src="http://pictures.sprintpcs.com/images/x.gif" border="0" height="10"/></td>
187
+ </tr>
188
+ </table>
189
+ </td>
190
+ </tr>
191
+ </table>
192
+ </body>
193
+ </html><!-- picture_mail_arrived -->
194
+
195
+ ------=_Part_012345_67890123.4567890123456--