rack-mail_exception 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. data/.document +5 -0
  2. data/.gitignore +22 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +38 -0
  5. data/Rakefile +56 -0
  6. data/VERSION +1 -0
  7. data/lib/rack/mail_exception.rb +103 -0
  8. data/test/helper.rb +13 -0
  9. data/test/test_rack_mail_exception.rb +93 -0
  10. data/vendor/mail/.bundle/config +2 -0
  11. data/vendor/mail/CHANGELOG.rdoc +370 -0
  12. data/vendor/mail/Dependencies.txt +3 -0
  13. data/vendor/mail/Gemfile +17 -0
  14. data/vendor/mail/README.rdoc +572 -0
  15. data/vendor/mail/ROADMAP +92 -0
  16. data/vendor/mail/Rakefile +41 -0
  17. data/vendor/mail/TODO.rdoc +9 -0
  18. data/vendor/mail/lib/mail.rb +76 -0
  19. data/vendor/mail/lib/mail/attachments_list.rb +99 -0
  20. data/vendor/mail/lib/mail/body.rb +287 -0
  21. data/vendor/mail/lib/mail/configuration.rb +67 -0
  22. data/vendor/mail/lib/mail/core_extensions/blank.rb +26 -0
  23. data/vendor/mail/lib/mail/core_extensions/nil.rb +11 -0
  24. data/vendor/mail/lib/mail/core_extensions/string.rb +27 -0
  25. data/vendor/mail/lib/mail/elements.rb +14 -0
  26. data/vendor/mail/lib/mail/elements/address.rb +306 -0
  27. data/vendor/mail/lib/mail/elements/address_list.rb +74 -0
  28. data/vendor/mail/lib/mail/elements/content_disposition_element.rb +30 -0
  29. data/vendor/mail/lib/mail/elements/content_location_element.rb +25 -0
  30. data/vendor/mail/lib/mail/elements/content_transfer_encoding_element.rb +24 -0
  31. data/vendor/mail/lib/mail/elements/content_type_element.rb +35 -0
  32. data/vendor/mail/lib/mail/elements/date_time_element.rb +26 -0
  33. data/vendor/mail/lib/mail/elements/envelope_from_element.rb +34 -0
  34. data/vendor/mail/lib/mail/elements/message_ids_element.rb +29 -0
  35. data/vendor/mail/lib/mail/elements/mime_version_element.rb +26 -0
  36. data/vendor/mail/lib/mail/elements/phrase_list.rb +21 -0
  37. data/vendor/mail/lib/mail/elements/received_element.rb +30 -0
  38. data/vendor/mail/lib/mail/encodings.rb +258 -0
  39. data/vendor/mail/lib/mail/encodings/7bit.rb +31 -0
  40. data/vendor/mail/lib/mail/encodings/8bit.rb +31 -0
  41. data/vendor/mail/lib/mail/encodings/base64.rb +33 -0
  42. data/vendor/mail/lib/mail/encodings/binary.rb +31 -0
  43. data/vendor/mail/lib/mail/encodings/quoted_printable.rb +38 -0
  44. data/vendor/mail/lib/mail/encodings/transfer_encoding.rb +58 -0
  45. data/vendor/mail/lib/mail/envelope.rb +35 -0
  46. data/vendor/mail/lib/mail/field.rb +223 -0
  47. data/vendor/mail/lib/mail/field_list.rb +33 -0
  48. data/vendor/mail/lib/mail/fields.rb +35 -0
  49. data/vendor/mail/lib/mail/fields/bcc_field.rb +56 -0
  50. data/vendor/mail/lib/mail/fields/cc_field.rb +55 -0
  51. data/vendor/mail/lib/mail/fields/comments_field.rb +41 -0
  52. data/vendor/mail/lib/mail/fields/common/address_container.rb +16 -0
  53. data/vendor/mail/lib/mail/fields/common/common_address.rb +125 -0
  54. data/vendor/mail/lib/mail/fields/common/common_date.rb +42 -0
  55. data/vendor/mail/lib/mail/fields/common/common_field.rb +50 -0
  56. data/vendor/mail/lib/mail/fields/common/common_message_id.rb +43 -0
  57. data/vendor/mail/lib/mail/fields/common/parameter_hash.rb +52 -0
  58. data/vendor/mail/lib/mail/fields/content_description_field.rb +19 -0
  59. data/vendor/mail/lib/mail/fields/content_disposition_field.rb +69 -0
  60. data/vendor/mail/lib/mail/fields/content_id_field.rb +63 -0
  61. data/vendor/mail/lib/mail/fields/content_location_field.rb +42 -0
  62. data/vendor/mail/lib/mail/fields/content_transfer_encoding_field.rb +50 -0
  63. data/vendor/mail/lib/mail/fields/content_type_field.rb +185 -0
  64. data/vendor/mail/lib/mail/fields/date_field.rb +55 -0
  65. data/vendor/mail/lib/mail/fields/from_field.rb +55 -0
  66. data/vendor/mail/lib/mail/fields/in_reply_to_field.rb +55 -0
  67. data/vendor/mail/lib/mail/fields/keywords_field.rb +44 -0
  68. data/vendor/mail/lib/mail/fields/message_id_field.rb +83 -0
  69. data/vendor/mail/lib/mail/fields/mime_version_field.rb +53 -0
  70. data/vendor/mail/lib/mail/fields/optional_field.rb +13 -0
  71. data/vendor/mail/lib/mail/fields/received_field.rb +67 -0
  72. data/vendor/mail/lib/mail/fields/references_field.rb +55 -0
  73. data/vendor/mail/lib/mail/fields/reply_to_field.rb +55 -0
  74. data/vendor/mail/lib/mail/fields/resent_bcc_field.rb +55 -0
  75. data/vendor/mail/lib/mail/fields/resent_cc_field.rb +55 -0
  76. data/vendor/mail/lib/mail/fields/resent_date_field.rb +35 -0
  77. data/vendor/mail/lib/mail/fields/resent_from_field.rb +55 -0
  78. data/vendor/mail/lib/mail/fields/resent_message_id_field.rb +34 -0
  79. data/vendor/mail/lib/mail/fields/resent_sender_field.rb +62 -0
  80. data/vendor/mail/lib/mail/fields/resent_to_field.rb +55 -0
  81. data/vendor/mail/lib/mail/fields/return_path_field.rb +64 -0
  82. data/vendor/mail/lib/mail/fields/sender_field.rb +67 -0
  83. data/vendor/mail/lib/mail/fields/structured_field.rb +51 -0
  84. data/vendor/mail/lib/mail/fields/subject_field.rb +16 -0
  85. data/vendor/mail/lib/mail/fields/to_field.rb +55 -0
  86. data/vendor/mail/lib/mail/fields/unstructured_field.rb +166 -0
  87. data/vendor/mail/lib/mail/header.rb +262 -0
  88. data/vendor/mail/lib/mail/mail.rb +234 -0
  89. data/vendor/mail/lib/mail/message.rb +1867 -0
  90. data/vendor/mail/lib/mail/network.rb +9 -0
  91. data/vendor/mail/lib/mail/network/delivery_methods/file_delivery.rb +40 -0
  92. data/vendor/mail/lib/mail/network/delivery_methods/sendmail.rb +62 -0
  93. data/vendor/mail/lib/mail/network/delivery_methods/smtp.rb +110 -0
  94. data/vendor/mail/lib/mail/network/delivery_methods/test_mailer.rb +40 -0
  95. data/vendor/mail/lib/mail/network/retriever_methods/imap.rb +18 -0
  96. data/vendor/mail/lib/mail/network/retriever_methods/pop3.rb +149 -0
  97. data/vendor/mail/lib/mail/parsers/address_lists.rb +64 -0
  98. data/vendor/mail/lib/mail/parsers/address_lists.treetop +19 -0
  99. data/vendor/mail/lib/mail/parsers/content_disposition.rb +387 -0
  100. data/vendor/mail/lib/mail/parsers/content_disposition.treetop +46 -0
  101. data/vendor/mail/lib/mail/parsers/content_location.rb +139 -0
  102. data/vendor/mail/lib/mail/parsers/content_location.treetop +20 -0
  103. data/vendor/mail/lib/mail/parsers/content_transfer_encoding.rb +162 -0
  104. data/vendor/mail/lib/mail/parsers/content_transfer_encoding.treetop +20 -0
  105. data/vendor/mail/lib/mail/parsers/content_type.rb +539 -0
  106. data/vendor/mail/lib/mail/parsers/content_type.treetop +58 -0
  107. data/vendor/mail/lib/mail/parsers/date_time.rb +114 -0
  108. data/vendor/mail/lib/mail/parsers/date_time.treetop +11 -0
  109. data/vendor/mail/lib/mail/parsers/envelope_from.rb +194 -0
  110. data/vendor/mail/lib/mail/parsers/envelope_from.treetop +32 -0
  111. data/vendor/mail/lib/mail/parsers/message_ids.rb +45 -0
  112. data/vendor/mail/lib/mail/parsers/message_ids.treetop +15 -0
  113. data/vendor/mail/lib/mail/parsers/mime_version.rb +144 -0
  114. data/vendor/mail/lib/mail/parsers/mime_version.treetop +19 -0
  115. data/vendor/mail/lib/mail/parsers/phrase_lists.rb +45 -0
  116. data/vendor/mail/lib/mail/parsers/phrase_lists.treetop +15 -0
  117. data/vendor/mail/lib/mail/parsers/received.rb +71 -0
  118. data/vendor/mail/lib/mail/parsers/received.treetop +11 -0
  119. data/vendor/mail/lib/mail/parsers/rfc2045.rb +464 -0
  120. data/vendor/mail/lib/mail/parsers/rfc2045.treetop +36 -0
  121. data/vendor/mail/lib/mail/parsers/rfc2822.rb +5318 -0
  122. data/vendor/mail/lib/mail/parsers/rfc2822.treetop +410 -0
  123. data/vendor/mail/lib/mail/parsers/rfc2822_obsolete.rb +3757 -0
  124. data/vendor/mail/lib/mail/parsers/rfc2822_obsolete.treetop +241 -0
  125. data/vendor/mail/lib/mail/part.rb +102 -0
  126. data/vendor/mail/lib/mail/parts_list.rb +34 -0
  127. data/vendor/mail/lib/mail/patterns.rb +30 -0
  128. data/vendor/mail/lib/mail/utilities.rb +181 -0
  129. data/vendor/mail/lib/mail/version.rb +10 -0
  130. data/vendor/mail/lib/mail/version_specific/ruby_1_8.rb +97 -0
  131. data/vendor/mail/lib/mail/version_specific/ruby_1_9.rb +87 -0
  132. data/vendor/mail/lib/tasks/corpus.rake +125 -0
  133. data/vendor/mail/lib/tasks/treetop.rake +10 -0
  134. data/vendor/mail/mail.gemspec +20 -0
  135. data/vendor/mail/reference/US ASCII Table.txt +130 -0
  136. data/vendor/mail/reference/rfc1035 Domain Implementation and Specification.txt +3083 -0
  137. data/vendor/mail/reference/rfc1049 Content-Type Header Field for Internet Messages.txt +451 -0
  138. data/vendor/mail/reference/rfc1344 Implications of MIME for Internet Mail Gateways.txt +586 -0
  139. data/vendor/mail/reference/rfc1345 Character Mnemonics & Character Sets.txt +5761 -0
  140. data/vendor/mail/reference/rfc1524 A User Agent Configuration Mechanism For Multimedia Mail Format Information.txt +675 -0
  141. data/vendor/mail/reference/rfc1652 SMTP Service Extension for 8bit-MIMEtransport.txt +339 -0
  142. data/vendor/mail/reference/rfc1892 Multipart Report .txt +227 -0
  143. data/vendor/mail/reference/rfc1893 Mail System Status Codes.txt +843 -0
  144. data/vendor/mail/reference/rfc2045 Multipurpose Internet Mail Extensions (1).txt +1739 -0
  145. data/vendor/mail/reference/rfc2046 Multipurpose Internet Mail Extensions (2).txt +2467 -0
  146. data/vendor/mail/reference/rfc2047 Multipurpose Internet Mail Extensions (3).txt +843 -0
  147. data/vendor/mail/reference/rfc2048 Multipurpose Internet Mail Extensions (4).txt +1180 -0
  148. data/vendor/mail/reference/rfc2049 Multipurpose Internet Mail Extensions (5).txt +1347 -0
  149. data/vendor/mail/reference/rfc2111 Content-ID and Message-ID URLs.txt +283 -0
  150. data/vendor/mail/reference/rfc2183 Content-Disposition Header Field.txt +675 -0
  151. data/vendor/mail/reference/rfc2231 MIME Parameter Value and Encoded Word Extensions.txt +563 -0
  152. data/vendor/mail/reference/rfc2387 MIME Multipart-Related Content-type.txt +563 -0
  153. data/vendor/mail/reference/rfc2821 Simple Mail Transfer Protocol.txt +3711 -0
  154. data/vendor/mail/reference/rfc2822 Internet Message Format.txt +2859 -0
  155. data/vendor/mail/reference/rfc3462 Reporting of Mail System Administrative Messages.txt +396 -0
  156. data/vendor/mail/reference/rfc3696 Checking and Transformation of Names.txt +898 -0
  157. data/vendor/mail/reference/rfc4155 The application-mbox Media Type.txt +502 -0
  158. data/vendor/mail/reference/rfc4234 Augmented BNF for Syntax Specifications: ABNF.txt +899 -0
  159. data/vendor/mail/reference/rfc822 Standard for the Format of ARPA Internet Text Messages.txt +2900 -0
  160. data/vendor/mail/spec/environment.rb +15 -0
  161. data/vendor/mail/spec/features/making_a_new_message.feature +14 -0
  162. data/vendor/mail/spec/features/steps/env.rb +6 -0
  163. data/vendor/mail/spec/features/steps/making_a_new_message_steps.rb +11 -0
  164. data/vendor/mail/spec/fixtures/attachments/basic_email.eml +31 -0
  165. data/vendor/mail/spec/fixtures/attachments/test.gif +0 -0
  166. data/vendor/mail/spec/fixtures/attachments/test.jpg +0 -0
  167. data/vendor/mail/spec/fixtures/attachments/test.pdf +0 -0
  168. data/vendor/mail/spec/fixtures/attachments/test.png +0 -0
  169. data/vendor/mail/spec/fixtures/attachments/test.tiff +0 -0
  170. data/vendor/mail/spec/fixtures/attachments/test.zip +0 -0
  171. data/vendor/mail/spec/fixtures/attachments//343/201/246/343/201/231/343/201/250.txt +2 -0
  172. data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_content_disposition.eml +29 -0
  173. data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_content_location.eml +32 -0
  174. data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_message_rfc822.eml +92 -0
  175. data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_only_email.eml +17 -0
  176. data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_pdf.eml +70 -0
  177. data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_with_encoded_name.eml +47 -0
  178. data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_with_quoted_filename.eml +60 -0
  179. data/vendor/mail/spec/fixtures/emails/error_emails/cant_parse_from.eml +33 -0
  180. data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_7-bit.eml +231 -0
  181. data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_empty.eml +33 -0
  182. data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_plain.eml +148 -0
  183. data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_qp_with_space.eml +53 -0
  184. data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_spam.eml +44 -0
  185. data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_text-html.eml +50 -0
  186. data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_with_8bits.eml +770 -0
  187. data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_with_semi_colon.eml +269 -0
  188. data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_x_uuencode.eml +79 -0
  189. data/vendor/mail/spec/fixtures/emails/error_emails/empty_group_lists.eml +162 -0
  190. data/vendor/mail/spec/fixtures/emails/error_emails/header_fields_with_empty_values.eml +33 -0
  191. data/vendor/mail/spec/fixtures/emails/error_emails/missing_body.eml +16 -0
  192. data/vendor/mail/spec/fixtures/emails/error_emails/missing_content_disposition.eml +43 -0
  193. data/vendor/mail/spec/fixtures/emails/error_emails/multiple_content_types.eml +25 -0
  194. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email11.eml +34 -0
  195. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email12.eml +32 -0
  196. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email2.eml +114 -0
  197. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email4.eml +59 -0
  198. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email7.eml +66 -0
  199. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email_encoded_stack_level_too_deep.eml +53 -0
  200. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email_with_illegal_boundary.eml +58 -0
  201. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email_with_mimepart_without_content_type.eml +94 -0
  202. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email_with_multipart_mixed_quoted_boundary.eml +50 -0
  203. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email_with_nested_attachment.eml +100 -0
  204. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email_with_quoted_illegal_boundary.eml +58 -0
  205. data/vendor/mail/spec/fixtures/emails/mime_emails/sig_only_email.eml +29 -0
  206. data/vendor/mail/spec/fixtures/emails/mime_emails/two_from_in_message.eml +42 -0
  207. data/vendor/mail/spec/fixtures/emails/multi_charset/japanese.eml +9 -0
  208. data/vendor/mail/spec/fixtures/emails/multi_charset/japanese_attachment.eml +27 -0
  209. data/vendor/mail/spec/fixtures/emails/multi_charset/japanese_attachment_long_name.eml +44 -0
  210. data/vendor/mail/spec/fixtures/emails/multipart_report_emails/multi_address_bounce1.eml +179 -0
  211. data/vendor/mail/spec/fixtures/emails/multipart_report_emails/multi_address_bounce2.eml +179 -0
  212. data/vendor/mail/spec/fixtures/emails/multipart_report_emails/report_422.eml +98 -0
  213. data/vendor/mail/spec/fixtures/emails/multipart_report_emails/report_530.eml +97 -0
  214. data/vendor/mail/spec/fixtures/emails/plain_emails/basic_email.eml +31 -0
  215. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email.eml +14 -0
  216. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email10.eml +20 -0
  217. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email5.eml +19 -0
  218. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email6.eml +20 -0
  219. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email8.eml +47 -0
  220. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_bad_time.eml +62 -0
  221. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_double_at_in_header.eml +14 -0
  222. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_incorrect_header.eml +28 -0
  223. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_multiple_from.eml +30 -0
  224. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_quoted_with_0d0a.eml +14 -0
  225. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_reply.eml +32 -0
  226. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_simple.eml +11 -0
  227. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_string_in_date_field.eml +17 -0
  228. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_trailing_dot.eml +21 -0
  229. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_with_bad_date.eml +48 -0
  230. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_with_partially_quoted_subject.eml +14 -0
  231. data/vendor/mail/spec/fixtures/emails/rfc2822/example01.eml +8 -0
  232. data/vendor/mail/spec/fixtures/emails/rfc2822/example02.eml +9 -0
  233. data/vendor/mail/spec/fixtures/emails/rfc2822/example03.eml +7 -0
  234. data/vendor/mail/spec/fixtures/emails/rfc2822/example04.eml +7 -0
  235. data/vendor/mail/spec/fixtures/emails/rfc2822/example05.eml +8 -0
  236. data/vendor/mail/spec/fixtures/emails/rfc2822/example06.eml +10 -0
  237. data/vendor/mail/spec/fixtures/emails/rfc2822/example07.eml +9 -0
  238. data/vendor/mail/spec/fixtures/emails/rfc2822/example08.eml +12 -0
  239. data/vendor/mail/spec/fixtures/emails/rfc2822/example09.eml +15 -0
  240. data/vendor/mail/spec/fixtures/emails/rfc2822/example10.eml +15 -0
  241. data/vendor/mail/spec/fixtures/emails/rfc2822/example11.eml +6 -0
  242. data/vendor/mail/spec/fixtures/emails/rfc2822/example12.eml +8 -0
  243. data/vendor/mail/spec/fixtures/emails/rfc2822/example13.eml +10 -0
  244. data/vendor/mail/spec/fixtures/emails/sample_output_multipart +0 -0
  245. data/vendor/mail/spec/mail/attachments_list_spec.rb +214 -0
  246. data/vendor/mail/spec/mail/body_spec.rb +385 -0
  247. data/vendor/mail/spec/mail/configuration_spec.rb +19 -0
  248. data/vendor/mail/spec/mail/core_extensions/string_spec.rb +62 -0
  249. data/vendor/mail/spec/mail/core_extensions_spec.rb +99 -0
  250. data/vendor/mail/spec/mail/elements/address_list_spec.rb +109 -0
  251. data/vendor/mail/spec/mail/elements/address_spec.rb +609 -0
  252. data/vendor/mail/spec/mail/elements/date_time_element_spec.rb +20 -0
  253. data/vendor/mail/spec/mail/elements/envelope_from_element_spec.rb +31 -0
  254. data/vendor/mail/spec/mail/elements/message_ids_element_spec.rb +43 -0
  255. data/vendor/mail/spec/mail/elements/phrase_list_spec.rb +22 -0
  256. data/vendor/mail/spec/mail/elements/received_element_spec.rb +34 -0
  257. data/vendor/mail/spec/mail/encoding_spec.rb +189 -0
  258. data/vendor/mail/spec/mail/encodings/base64_spec.rb +25 -0
  259. data/vendor/mail/spec/mail/encodings/quoted_printable_spec.rb +25 -0
  260. data/vendor/mail/spec/mail/encodings_spec.rb +664 -0
  261. data/vendor/mail/spec/mail/example_emails_spec.rb +303 -0
  262. data/vendor/mail/spec/mail/field_list_spec.rb +33 -0
  263. data/vendor/mail/spec/mail/field_spec.rb +198 -0
  264. data/vendor/mail/spec/mail/fields/bcc_field_spec.rb +89 -0
  265. data/vendor/mail/spec/mail/fields/cc_field_spec.rb +79 -0
  266. data/vendor/mail/spec/mail/fields/comments_field_spec.rb +25 -0
  267. data/vendor/mail/spec/mail/fields/common/address_container_spec.rb +18 -0
  268. data/vendor/mail/spec/mail/fields/common/common_address_spec.rb +132 -0
  269. data/vendor/mail/spec/mail/fields/common/common_date_spec.rb +25 -0
  270. data/vendor/mail/spec/mail/fields/common/common_field_spec.rb +69 -0
  271. data/vendor/mail/spec/mail/fields/common/common_message_id_spec.rb +30 -0
  272. data/vendor/mail/spec/mail/fields/common/parameter_hash_spec.rb +56 -0
  273. data/vendor/mail/spec/mail/fields/content_description_field_spec.rb +39 -0
  274. data/vendor/mail/spec/mail/fields/content_disposition_field_spec.rb +55 -0
  275. data/vendor/mail/spec/mail/fields/content_id_field_spec.rb +117 -0
  276. data/vendor/mail/spec/mail/fields/content_location_field_spec.rb +46 -0
  277. data/vendor/mail/spec/mail/fields/content_transfer_encoding_field_spec.rb +113 -0
  278. data/vendor/mail/spec/mail/fields/content_type_field_spec.rb +678 -0
  279. data/vendor/mail/spec/mail/fields/date_field_spec.rb +73 -0
  280. data/vendor/mail/spec/mail/fields/envelope_spec.rb +48 -0
  281. data/vendor/mail/spec/mail/fields/from_field_spec.rb +89 -0
  282. data/vendor/mail/spec/mail/fields/in_reply_to_field_spec.rb +62 -0
  283. data/vendor/mail/spec/mail/fields/keywords_field_spec.rb +66 -0
  284. data/vendor/mail/spec/mail/fields/message_id_field_spec.rb +147 -0
  285. data/vendor/mail/spec/mail/fields/mime_version_field_spec.rb +166 -0
  286. data/vendor/mail/spec/mail/fields/received_field_spec.rb +44 -0
  287. data/vendor/mail/spec/mail/fields/references_field_spec.rb +35 -0
  288. data/vendor/mail/spec/mail/fields/reply_to_field_spec.rb +67 -0
  289. data/vendor/mail/spec/mail/fields/resent_bcc_field_spec.rb +66 -0
  290. data/vendor/mail/spec/mail/fields/resent_cc_field_spec.rb +66 -0
  291. data/vendor/mail/spec/mail/fields/resent_date_field_spec.rb +39 -0
  292. data/vendor/mail/spec/mail/fields/resent_from_field_spec.rb +66 -0
  293. data/vendor/mail/spec/mail/fields/resent_message_id_field_spec.rb +24 -0
  294. data/vendor/mail/spec/mail/fields/resent_sender_field_spec.rb +58 -0
  295. data/vendor/mail/spec/mail/fields/resent_to_field_spec.rb +66 -0
  296. data/vendor/mail/spec/mail/fields/return_path_field_spec.rb +52 -0
  297. data/vendor/mail/spec/mail/fields/sender_field_spec.rb +58 -0
  298. data/vendor/mail/spec/mail/fields/structured_field_spec.rb +72 -0
  299. data/vendor/mail/spec/mail/fields/to_field_spec.rb +92 -0
  300. data/vendor/mail/spec/mail/fields/unstructured_field_spec.rb +134 -0
  301. data/vendor/mail/spec/mail/header_spec.rb +578 -0
  302. data/vendor/mail/spec/mail/mail_spec.rb +34 -0
  303. data/vendor/mail/spec/mail/message_spec.rb +1409 -0
  304. data/vendor/mail/spec/mail/mime_messages_spec.rb +435 -0
  305. data/vendor/mail/spec/mail/multipart_report_spec.rb +112 -0
  306. data/vendor/mail/spec/mail/network/delivery_methods/file_delivery_spec.rb +79 -0
  307. data/vendor/mail/spec/mail/network/delivery_methods/sendmail_spec.rb +125 -0
  308. data/vendor/mail/spec/mail/network/delivery_methods/smtp_spec.rb +133 -0
  309. data/vendor/mail/spec/mail/network/delivery_methods/test_mailer_spec.rb +57 -0
  310. data/vendor/mail/spec/mail/network/retriever_methods/pop3_spec.rb +180 -0
  311. data/vendor/mail/spec/mail/network_spec.rb +359 -0
  312. data/vendor/mail/spec/mail/parsers/address_lists_parser_spec.rb +15 -0
  313. data/vendor/mail/spec/mail/parsers/content_transfer_encoding_parser_spec.rb +72 -0
  314. data/vendor/mail/spec/mail/part_spec.rb +129 -0
  315. data/vendor/mail/spec/mail/parts_list_spec.rb +12 -0
  316. data/vendor/mail/spec/mail/round_tripping_spec.rb +44 -0
  317. data/vendor/mail/spec/mail/utilities_spec.rb +327 -0
  318. data/vendor/mail/spec/mail/version_specific/escape_paren_1_8_spec.rb +32 -0
  319. data/vendor/mail/spec/matchers/break_down_to.rb +35 -0
  320. data/vendor/mail/spec/spec_helper.rb +163 -0
  321. metadata +442 -0
@@ -0,0 +1,11 @@
1
+ From mike@nowhere.com
2
+ Return-Path: <mikel@nowhere.com>
3
+ Received: from mikel091a by oaamta05sl.mx.bigpond.com with SMTP id <20071021093820.JFMT24025.oaamta05sl.mx.bigpond.com@mikel091a> for <mikel@nowhere.com.else>; Sun, 21 Oct 2007 19:38:20 +1000
4
+ Date: Sun, 21 Oct 2007 19:38:13 +1000
5
+ From: Mikel Lindsaar <mikel@nowhere.com>
6
+ To: Mikel <mikel@somewhere.com>
7
+ Message-Id: <009601c813c6$19df3510$0437d30a@mikel091a>
8
+ Subject: Testing outlook
9
+
10
+ Hello Mikel
11
+
@@ -0,0 +1,17 @@
1
+ From mikel@me.com Mon May 2 16:07:05 2005
2
+ Mime-Version: 1.0 (Apple Message framework v622)
3
+ Received: from jsj1wlrmd001.webex.com (by jsj1wlrmd001.webex.com
4
+ (8.12.10/8.12.11) with ESMTP id m8MKKPTs022429
5
+ for <xxxx@example.com>; Mon, 22 Sep 2008 20:20:25 GMT
6
+ Content-Transfer-Encoding: base64
7
+ Message-Id: <d3b8cf8e49f04480850c28713a1f473e@lindsaar.net>
8
+ Content-Type: text/plain;
9
+ charset=EUC-KR;
10
+ format=flowed
11
+ To: bob@bob.com
12
+ From: mikel@me.com
13
+ Subject: =?EUC-KR?Q?NOTE:_=C7=D1=B1=B9=B8=BB=B7=CE_=C7=CF=B4=C2_=B0=CD?=
14
+ Date: Sat, 20 Sep 2008 20:04:30 +0300 (ùòåï ÷éõ éøåùìéí)
15
+
16
+ tOu6zrrQwMcguLbC+bChwfa3ziwgv+y4rrTCIMfPs6q01MC7ILnPvcC0z7TZLg0KDQrBpiDAzLin
17
+ wLogSmFtaXPA1LTPtNku
@@ -0,0 +1,21 @@
1
+ Delivered-To: xxx@xxx.com
2
+ Received: by 10.67.31.8 with SMTP id i8cs1195ugj;
3
+ Mon, 22 Sep 2008 13:45:18 -0700 (PDT)
4
+ Received: by 10.100.207.5 with SMTP id e5mr3483815ang.104.1222110393505;
5
+ Mon, 22 Sep 2008 12:06:33 -0700 (PDT)
6
+ Return-Path: <noreply@rubyforge.org>
7
+ Received: from rubyforge.org (rubyforge.org [205.234.109.19])
8
+ by mx.google.com with ESMTP id c2si899474ana.10.2008.09.22.12.06.28;
9
+ Mon, 22 Sep 2008 12:06:33 -0700 (PDT)
10
+ Received-SPF: pass (google.com: best guess record for domain of noreply@rubyforge.org designates 205.234.109.19 as permitted sender) client-ip=205.234.109.19;
11
+ Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of noreply@rubyforge.org designates 205.234.109.19 as permitted sender) smtp.mail=noreply@rubyforge.org
12
+ Received: by rubyforge.org (Postfix, from userid 502)
13
+ id 8FB1518581AC; Mon, 22 Sep 2008 15:06:28 -0400 (EDT)
14
+ To: noreply@rubyforge.org
15
+ From: Sandy M. <noreply@rubyforge.org>
16
+ Subject: [skynet-help][60666] How are intermediate files handled in SkyNet?
17
+ Content-type: text/plain; charset=UTF-8
18
+ Message-Id: <20080922190628.8FB1518581AC@rubyforge.org>
19
+ Date: Mon, 22 Sep 2008 15:06:28 -0400 (EDT)
20
+
21
+ Testing, testing, 123.
@@ -0,0 +1,48 @@
1
+ Return-Path: <me@xxx.xxxxxxxx.xxx.xx>
2
+ X-Original-To: external@xxx.xxxxxxxx.xxx.xx
3
+ Delivered-To: external@xxx.xxxxxxxx.xxx.xx
4
+ Received: from server.xxx.xxxxxxxx.xxx.xx (localhost.xxxxxxxx.xxx.xx [127.0.0.1])
5
+ by server.xxx.xxxxxxxx.xxx.xx (Postfix) with ESMTP id 0173828456
6
+ for <external@xxx.xxxxxxxx.xxx.xx>; Mon, 5 Nov 2007 20:17:37 +1100 (EST)
7
+ Received: from server.xxx.xxxxxxxx.xxx.xx (server.xxx.xxxxxxxx.xxx.xx [10.130.1.250])
8
+ by localhost (FormatMessage) with SMTP id d7be4d19ed6d330c
9
+ for <sydney@xxxxxxxx.xxx>; Mon, 05 Nov 2007 20:17:37 +1100 (EST)
10
+ Received: from server.sydney.xxxxxxxx.xxx.xx (unknown [10.130.2.6])
11
+ by server.xxx.xxxxxxxx.xxx.xx (Postfix) with ESMTP id BB00328442
12
+ for <sydney@xxxxxxxx.xxx>; Mon, 5 Nov 2007 20:17:37 +1100 (EST)
13
+ Received: from dircomm (unknown [10.130.2.8])
14
+ by server.sydney.xxxxxxxx.xxx.xx (Postfix) with ESMTP id 20A692841F
15
+ for <sydney@xxxxxxxx.xxx>; Mon, 5 Nov 2007 20:18:24 +1100 (EST)
16
+ X-Mailbox-Line: From subventive@vodtravel.com
17
+ Message-ID: <000001c81a67$a4450700$0100007f@localhost>
18
+ From: "Darrell Shaw" <subventive@vodtravel.com>
19
+ To: <sydney@xxxxxxxx.xxx>
20
+ Subject: Microsoft Vlsta & Office2007, Just released for 79$ Save 1599.95$ 0ff Retai|
21
+ Date: Pn, 29 paX 2007 21:13:00 +0100
22
+ Content-Type: text/plain;
23
+ charset="us-ascii"
24
+ Content-Transfer-Encoding: 7bit
25
+ X-Priority: 3 (Normal)
26
+ X-MSMail-Priority: Normal
27
+ X-Mailer: Microsoft Outlook, Build 10.0.3416
28
+ Importance: Normal
29
+ X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.150
30
+ X-CSI-TMailScanner-Information: Please contact the ISP for more information
31
+ X-CSI-TMailScanner: Found to be clean
32
+ X-CSI-TMailScanner-SpamCheck: not spam, SpamAssassin (score=1.87, required 4,
33
+ autolearn=disabled, INVALID_DATE 0.23, RAZOR2_CF_RANGE_51_100 1.49,
34
+ RAZOR2_CHECK 0.15)
35
+ X-CSI-TMailScanner-SpamScore: s
36
+ X-TMailScanner-From: subventive@vodtravel.com
37
+ Resent-Date: Mon, 05 Nov 2007 20:17:37 +1100 (EST)
38
+ Resent-From: <mail_dump@ns1.xxxxxxxx.xxx.xx>
39
+ Resent-To: <mikel@xxxxxxxx.xxx>
40
+ Resent-Message-ID: <d7be4d19ed6d330c.1194254257@xxxxxxxx.xxx.xx>
41
+ X-UID: 4702
42
+ Status: RO
43
+
44
+ hotnewsoft . com
45
+
46
+
47
+
48
+
@@ -0,0 +1,14 @@
1
+ From jamis@37signals.com Mon May 2 16:07:05 2005
2
+ Mime-Version: 1.0 (Apple Message framework v622)
3
+ Content-Transfer-Encoding: base64
4
+ Message-Id: <d3b8cf8e49f04480850c28713a1f473e@37signals.com>
5
+ Content-Type: text/plain;
6
+ charset=EUC-KR;
7
+ format=flowed
8
+ To: jamis@37signals.com
9
+ From: Jamis Buck <jamis@37signals.com>
10
+ Subject: Re: Test: =?UTF-8?B?Iua8ouWtlyI=?= mid =?UTF-8?B?Iua8ouWtlyI=?= tail
11
+ Date: Mon, 2 May 2005 16:07:05 -0600
12
+
13
+ tOu6zrrQwMcguLbC+bChwfa3ziwgv+y4rrTCIMfPs6q01MC7ILnPvcC0z7TZLg0KDQrBpiDAzLin
14
+ wLogSmFtaXPA1LTPtNku
@@ -0,0 +1,8 @@
1
+ From: John Doe <jdoe@machine.example>
2
+ To: Mary Smith <mary@example.net>
3
+ Subject: Saying Hello
4
+ Date: Fri, 21 Nov 1997 09:55:06 -0600
5
+ Message-ID: <1234@local.machine.example>
6
+
7
+ This is a message just to say hello.
8
+ So, "Hello".
@@ -0,0 +1,9 @@
1
+ From: John Doe <jdoe@machine.example>
2
+ Sender: Michael Jones <mjones@machine.example>
3
+ To: Mary Smith <mary@example.net>
4
+ Subject: Saying Hello
5
+ Date: Fri, 21 Nov 1997 09:55:06 -0600
6
+ Message-ID: <1234@local.machine.example>
7
+
8
+ This is a message just to say hello.
9
+ So, "Hello".
@@ -0,0 +1,7 @@
1
+ From: "Joe Q. Public" <john.q.public@example.com>
2
+ To: Mary Smith <mary@x.test>, jdoe@example.org, Who? <one@y.test>
3
+ Cc: <boss@nil.test>, "Giant; \"Big\" Box" <sysservices@example.net>
4
+ Date: Tue, 1 Jul 2003 10:52:37 +0200
5
+ Message-ID: <5678.21-Nov-1997@example.com>
6
+
7
+ Hi everyone.
@@ -0,0 +1,7 @@
1
+ From: Pete <pete@silly.example>
2
+ To: A Group:Chris Jones <c@a.test>,joe@where.test,John <jdoe@one.test>;
3
+ Cc: Undisclosed recipients:;
4
+ Date: Thu, 13 Feb 1969 23:32:54 -0330
5
+ Message-ID: <testabcd.1234@silly.example>
6
+
7
+ Testing.
@@ -0,0 +1,8 @@
1
+ From: John Doe <jdoe@machine.example>
2
+ To: Mary Smith <mary@example.net>
3
+ Subject: Saying Hello
4
+ Date: Fri, 21 Nov 1997 09:55:06 -0600
5
+ Message-ID: <1234@local.machine.example>
6
+
7
+ This is a message just to say hello.
8
+ So, "Hello".
@@ -0,0 +1,10 @@
1
+ From: Mary Smith <mary@example.net>
2
+ To: John Doe <jdoe@machine.example>
3
+ Reply-To: "Mary Smith: Personal Account" <smith@home.example>
4
+ Subject: Re: Saying Hello
5
+ Date: Fri, 21 Nov 1997 10:01:10 -0600
6
+ Message-ID: <3456@example.net>
7
+ In-Reply-To: <1234@local.machine.example>
8
+ References: <1234@local.machine.example>
9
+
10
+ This is a reply to your hello.
@@ -0,0 +1,9 @@
1
+ To: "Mary Smith: Personal Account" <smith@home.example>
2
+ From: John Doe <jdoe@machine.example>
3
+ Subject: Re: Saying Hello
4
+ Date: Fri, 21 Nov 1997 11:00:00 -0600
5
+ Message-ID: <abcd.1234@local.machine.tld>
6
+ In-Reply-To: <3456@example.net>
7
+ References: <1234@local.machine.example> <3456@example.net>
8
+
9
+ This is a reply to your reply.
@@ -0,0 +1,12 @@
1
+ Resent-From: Mary Smith <mary@example.net>
2
+ Resent-To: Jane Brown <j-brown@other.example>
3
+ Resent-Date: Mon, 24 Nov 1997 14:22:01 -0800
4
+ Resent-Message-ID: <78910@example.net>
5
+ From: John Doe <jdoe@machine.example>
6
+ To: Mary Smith <mary@example.net>
7
+ Subject: Saying Hello
8
+ Date: Fri, 21 Nov 1997 09:55:06 -0600
9
+ Message-ID: <1234@local.machine.example>
10
+
11
+ This is a message just to say hello.
12
+ So, "Hello".
@@ -0,0 +1,15 @@
1
+ Received: from x.y.test
2
+ by example.net
3
+ via TCP
4
+ with ESMTP
5
+ id ABC12345
6
+ for <mary@example.net>; 21 Nov 1997 10:05:43 -0600
7
+ Received: from machine.example by x.y.test; 21 Nov 1997 10:01:22 -0600
8
+ From: John Doe <jdoe@machine.example>
9
+ To: Mary Smith <mary@example.net>
10
+ Subject: Saying Hello
11
+ Date: Fri, 21 Nov 1997 09:55:06 -0600
12
+ Message-ID: <1234@local.machine.example>
13
+
14
+ This is a message just to say hello.
15
+ So, "Hello".
@@ -0,0 +1,15 @@
1
+ From: Pete(A wonderful \) chap) <pete(his account)@silly.test(his host)>
2
+ To:A Group(Some people)
3
+ :Chris Jones <c@(Chris's host.)public.example>,
4
+ joe@example.org,
5
+ John <jdoe@one.test> (my dear friend); (the end of the group)
6
+ Cc:(Empty list)(start)Undisclosed recipients :(nobody(that I know)) ;
7
+ Date: Thu,
8
+ 13
9
+ Feb
10
+ 1969
11
+ 23:32
12
+ -0330 (Newfoundland Time)
13
+ Message-ID: <testabcd.1234@silly.test>
14
+
15
+ Testing.
@@ -0,0 +1,6 @@
1
+ From: Joe Q. Public <john.q.public@example.com>
2
+ To: Mary Smith <@machine.tld:mary@example.net>, , jdoe@test . example
3
+ Date: Tue, 1 Jul 2003 10:52:37 +0200
4
+ Message-ID: <5678.21-Nov-1997@example.com>
5
+
6
+ Hi everyone.
@@ -0,0 +1,8 @@
1
+ From: John Doe <jdoe@machine.example>
2
+ To: Mary Smith <mary@example.net>
3
+ Subject: Saying Hello
4
+ Date: 21 Nov 97 09:55:06 GMT
5
+ Message-ID: <1234@local.machine.example>
6
+
7
+ This is a message just to say hello.
8
+ So, "Hello".
@@ -0,0 +1,10 @@
1
+ From : John Doe <jdoe@machine(comment). example>
2
+ To : Mary Smith
3
+ __
4
+ <mary@example.net>
5
+ Subject : Saying Hello
6
+ Date : Fri, 21 Nov 1997 09(comment): 55 : 06 -0600
7
+ Message-ID : <1234 @ local(blah) .machine .example>
8
+
9
+ This is a message just to say hello.
10
+ So, "Hello".
@@ -0,0 +1,214 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ def encode_base64( str )
6
+ Mail::Encodings::Base64.encode(str)
7
+ end
8
+
9
+ def check_decoded(actual, expected)
10
+ if RUBY_VERSION >= '1.9'
11
+ actual.should == expected.force_encoding(Encoding::BINARY)
12
+ else
13
+ actual.should == expected
14
+ end
15
+ end
16
+
17
+ describe "Attachments" do
18
+
19
+ before(:each) do
20
+ @mail = Mail.new
21
+ end
22
+
23
+ describe "from direct content" do
24
+ it "should work" do
25
+ file_data = File.read(filename = fixture('attachments', 'test.png'))
26
+ @mail.attachments['test.png'] = File.read(fixture('attachments', 'test.png'))
27
+ @mail.attachments['test.png'].filename.should == 'test.png'
28
+ check_decoded(@mail.attachments[0].decoded, file_data)
29
+ end
30
+
31
+ it "should work out magically the mime_type" do
32
+ file_data = File.read(filename = fixture('attachments', 'test.png'))
33
+ @mail.attachments['test.png'] = File.read(fixture('attachments', 'test.png'))
34
+ @mail.attachments[0].mime_type.should == 'image/png'
35
+ end
36
+
37
+ it "should assign the filename" do
38
+ file_data = File.read(filename = fixture('attachments', 'test.png'))
39
+ @mail.attachments['test.png'] = File.read(fixture('attachments', 'test.png'))
40
+ @mail.attachments[0].filename.should == 'test.png'
41
+ end
42
+
43
+ end
44
+
45
+ describe "from a supplied Hash" do
46
+ it "should work" do
47
+ file_data = File.read(filename = fixture('attachments', 'test.png'))
48
+ @mail.attachments['test.png'] = { :content => file_data }
49
+ @mail.attachments[0].filename.should == 'test.png'
50
+ check_decoded(@mail.attachments[0].decoded, file_data)
51
+ end
52
+
53
+ it "should allow you to override the content_type" do
54
+ file_data = File.read(filename = fixture('attachments', 'test.png'))
55
+ @mail.attachments['test.png'] = { :content => file_data,
56
+ :content_type => "application/x-gzip" }
57
+ @mail.attachments[0].content_type.should == 'application/x-gzip'
58
+ end
59
+
60
+ it "should allow you to override the mime_type" do
61
+ file_data = File.read(filename = fixture('attachments', 'test.png'))
62
+ @mail.attachments['test.png'] = { :content => file_data,
63
+ :mime_type => "application/x-gzip" }
64
+ @mail.attachments[0].mime_type.should == 'application/x-gzip'
65
+ end
66
+
67
+ it "should allow you to override the mime_type" do
68
+ file_data = File.read(filename = fixture('attachments', 'test.png'))
69
+ @mail.attachments['invoice.jpg'] = { :data => "you smiling",
70
+ :mime_type => "image/x-jpg",
71
+ :transfer_encoding => "base64" }
72
+ @mail.attachments[0].mime_type.should == 'image/x-jpg'
73
+ end
74
+
75
+ end
76
+
77
+ describe "decoding and encoding" do
78
+
79
+ it "should set it's content_transfer_encoding" do
80
+ file_data = File.read(filename = fixture('attachments', 'test.png'))
81
+ @mail.attachments['test.png'] = { :content => file_data }
82
+ @mail.ready_to_send!
83
+ @mail.attachments[0].content_transfer_encoding.should == 'base64'
84
+ end
85
+
86
+ it "should encode it's body to base64" do
87
+ file_data = File.read(filename = fixture('attachments', 'test.png'))
88
+ @mail.attachments['test.png'] = { :content => file_data }
89
+ @mail.ready_to_send!
90
+ @mail.attachments[0].encoded.should include(encode_base64(file_data))
91
+ end
92
+
93
+ it "should allow you to pass in an encoded attachment with an encoding" do
94
+ file_data = File.read(filename = fixture('attachments', 'test.png'))
95
+ encoded_data = encode_base64(file_data)
96
+ @mail.attachments['test.png'] = { :content => encoded_data,
97
+ :encoding => 'base64' }
98
+ check_decoded(@mail.attachments[0].decoded, file_data)
99
+ end
100
+
101
+ it "should not allow you to pass in an encoded attachment with an unknown encoding" do
102
+ file_data = File.read(filename = fixture('attachments', 'test.png'))
103
+ base64_encoded_data = encode_base64(file_data)
104
+ doing {@mail.attachments['test.png'] = { :content => base64_encoded_data,
105
+ :encoding => 'weird_encoding' }}.should raise_error
106
+ end
107
+
108
+ it "should be able to call read on the attachment to return the decoded data" do
109
+ file_data = File.read(filename = fixture('attachments', 'test.png'))
110
+ @mail.attachments['test.png'] = { :content => file_data }
111
+ if RUBY_VERSION >= '1.9'
112
+ expected = @mail.attachments[0].read.force_encoding(file_data.encoding)
113
+ else
114
+ expected = @mail.attachments[0].read
115
+ end
116
+ expected.should == file_data
117
+ end
118
+
119
+ end
120
+
121
+ describe "multiple attachments" do
122
+
123
+ it "should allow you to pass in more than one attachment" do
124
+ mail = Mail.new
125
+ mail.attachments['test.pdf'] = File.read(fixture('attachments', 'test.pdf'))
126
+ mail.attachments['test.gif'] = File.read(fixture('attachments', 'test.gif'))
127
+ mail.attachments['test.jpg'] = File.read(fixture('attachments', 'test.jpg'))
128
+ mail.attachments['test.zip'] = File.read(fixture('attachments', 'test.zip'))
129
+ mail.attachments[0].filename.should == 'test.pdf'
130
+ mail.attachments[1].filename.should == 'test.gif'
131
+ mail.attachments[2].filename.should == 'test.jpg'
132
+ mail.attachments[3].filename.should == 'test.zip'
133
+ end
134
+
135
+ end
136
+
137
+ describe "getting the content ID from an inline attachment" do
138
+
139
+ before(:each) do
140
+ @mail = Mail.new
141
+ @mail.attachments['test.gif'] = File.read(fixture('attachments', 'test.gif'))
142
+ @cid = @mail.attachments['test.gif'].content_id
143
+ end
144
+
145
+ it "should return a content-id for the attachment on creation if passed inline => true" do
146
+ @cid.should_not be_nil
147
+ end
148
+
149
+ it "should return a valid content-id on inline attachments" do
150
+ Mail::ContentIdField.new(@cid).errors.should be_empty
151
+ end
152
+
153
+ it "should provide a URL escaped content_id (without brackets) for use inside an email" do
154
+ @inline = @mail.attachments['test.gif'].inline_content_id
155
+ @inline.should == URI.escape(@cid.gsub(/^</, '').gsub(/>$/, ''))
156
+ end
157
+ end
158
+
159
+ describe "setting the content type correctly" do
160
+ it "should set the content type to multipart/mixed if none given and you add an attachment" do
161
+ mail = Mail.new
162
+ mail.attachments['test.pdf'] = File.read(fixture('attachments', 'test.pdf'))
163
+ mail.encoded
164
+ mail.mime_type.should == 'multipart/mixed'
165
+ end
166
+ end
167
+
168
+ end
169
+
170
+ describe "reading emails with attachments" do
171
+ describe "test emails" do
172
+
173
+ it "should find the attachment using content location" do
174
+ mail = Mail.read(fixture(File.join('emails', 'attachment_emails', 'attachment_content_location.eml')))
175
+ mail.attachments.length.should == 1
176
+ end
177
+
178
+ it "should find an attachment defined with 'name' and Content-Disposition: attachment" do
179
+ mail = Mail.read(fixture(File.join('emails', 'attachment_emails', 'attachment_content_disposition.eml')))
180
+ mail.attachments.length.should == 1
181
+ end
182
+
183
+ it "should use the content-type filename or name over the content-disposition filename" do
184
+ mail = Mail.read(fixture(File.join('emails', 'attachment_emails', 'attachment_content_disposition.eml')))
185
+ mail.attachments[0].filename.should == 'hello.rb'
186
+ end
187
+
188
+ it "should decode an attachment" do
189
+ mail = Mail.read(fixture(File.join('emails', 'attachment_emails', 'attachment_pdf.eml')))
190
+ mail.attachments[0].decoded.length.should == 1026
191
+ end
192
+
193
+ it "should find an attachment that has an encoded name value" do
194
+ mail = Mail.read(fixture(File.join('emails', 'attachment_emails', 'attachment_with_encoded_name.eml')))
195
+ mail.attachments.length.should == 1
196
+ result = mail.attachments[0].filename
197
+ if RUBY_VERSION >= '1.9'
198
+ expected = "01 Quien Te Dij\212at. Pitbull.mp3".force_encoding(result.encoding)
199
+ else
200
+ expected = "01 Quien Te Dij\212at. Pitbull.mp3"
201
+ end
202
+ result.should == expected
203
+ end
204
+
205
+ it "should find attachments inside parts with content-type message/rfc822" do
206
+ mail = Mail.read(fixture(File.join("emails",
207
+ "attachment_emails",
208
+ "attachment_message_rfc822.eml")))
209
+ mail.attachments.length.should == 1
210
+ mail.attachments[0].decoded.length.should == 1026
211
+ end
212
+
213
+ end
214
+ end