mack-notifier 0.8.1 → 0.8.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (288) hide show
  1. data/lib/gems.rb +13 -0
  2. data/lib/gems/tmail-1.2.3.1/ext/Makefile +20 -0
  3. data/lib/gems/tmail-1.2.3.1/ext/tmailscanner/tmail/MANIFEST +4 -0
  4. data/lib/gems/tmail-1.2.3.1/ext/tmailscanner/tmail/depend +1 -0
  5. data/lib/gems/tmail-1.2.3.1/ext/tmailscanner/tmail/extconf.rb +33 -0
  6. data/lib/gems/tmail-1.2.3.1/ext/tmailscanner/tmail/tmailscanner.c +583 -0
  7. data/lib/gems/tmail-1.2.3.1/lib/tmail.rb +5 -0
  8. data/lib/gems/tmail-1.2.3.1/lib/tmail/Makefile +18 -0
  9. data/lib/gems/tmail-1.2.3.1/lib/tmail/address.rb +426 -0
  10. data/lib/gems/tmail-1.2.3.1/lib/tmail/attachments.rb +46 -0
  11. data/lib/gems/tmail-1.2.3.1/lib/tmail/base64.rb +46 -0
  12. data/lib/gems/tmail-1.2.3.1/lib/tmail/compat.rb +41 -0
  13. data/lib/gems/tmail-1.2.3.1/lib/tmail/config.rb +67 -0
  14. data/lib/gems/tmail-1.2.3.1/lib/tmail/core_extensions.rb +63 -0
  15. data/lib/gems/tmail-1.2.3.1/lib/tmail/encode.rb +581 -0
  16. data/lib/gems/tmail-1.2.3.1/lib/tmail/header.rb +960 -0
  17. data/lib/gems/tmail-1.2.3.1/lib/tmail/index.rb +9 -0
  18. data/lib/gems/tmail-1.2.3.1/lib/tmail/interface.rb +1125 -0
  19. data/lib/gems/tmail-1.2.3.1/lib/tmail/loader.rb +3 -0
  20. data/lib/gems/tmail-1.2.3.1/lib/tmail/mail.rb +578 -0
  21. data/lib/gems/tmail-1.2.3.1/lib/tmail/mailbox.rb +495 -0
  22. data/lib/gems/tmail-1.2.3.1/lib/tmail/main.rb +6 -0
  23. data/lib/gems/tmail-1.2.3.1/lib/tmail/mbox.rb +3 -0
  24. data/lib/gems/tmail-1.2.3.1/lib/tmail/net.rb +248 -0
  25. data/lib/gems/tmail-1.2.3.1/lib/tmail/obsolete.rb +132 -0
  26. data/lib/gems/tmail-1.2.3.1/lib/tmail/parser.rb +1476 -0
  27. data/lib/gems/tmail-1.2.3.1/lib/tmail/parser.y +381 -0
  28. data/lib/gems/tmail-1.2.3.1/lib/tmail/port.rb +379 -0
  29. data/lib/gems/tmail-1.2.3.1/lib/tmail/quoting.rb +118 -0
  30. data/lib/gems/tmail-1.2.3.1/lib/tmail/require_arch.rb +58 -0
  31. data/lib/gems/tmail-1.2.3.1/lib/tmail/scanner.rb +49 -0
  32. data/lib/gems/tmail-1.2.3.1/lib/tmail/scanner_r.rb +261 -0
  33. data/lib/gems/tmail-1.2.3.1/lib/tmail/stringio.rb +280 -0
  34. data/lib/gems/tmail-1.2.3.1/lib/tmail/utils.rb +337 -0
  35. data/lib/gems/tmail-1.2.3.1/lib/tmail/version.rb +39 -0
  36. data/lib/gems/tmail-1.2.3.1/meta/MANIFEST +128 -0
  37. data/lib/gems/tmail-1.2.3.1/meta/VERSION +1 -0
  38. data/lib/gems/tmail-1.2.3.1/meta/project.yaml +30 -0
  39. data/lib/gems/tmail-1.2.3.1/meta/unixname +1 -0
  40. data/lib/gems/validatable-1.6.7/README +118 -0
  41. data/lib/gems/validatable-1.6.7/lib/child_validation.rb +15 -0
  42. data/lib/gems/validatable-1.6.7/lib/errors.rb +74 -0
  43. data/lib/gems/validatable-1.6.7/lib/included_validation.rb +9 -0
  44. data/lib/gems/validatable-1.6.7/lib/macros.rb +283 -0
  45. data/lib/gems/validatable-1.6.7/lib/object_extension.rb +21 -0
  46. data/lib/gems/validatable-1.6.7/lib/requireable.rb +26 -0
  47. data/lib/gems/validatable-1.6.7/lib/understandable.rb +31 -0
  48. data/lib/gems/validatable-1.6.7/lib/validatable.rb +19 -0
  49. data/lib/gems/validatable-1.6.7/lib/validatable_class_methods.rb +85 -0
  50. data/lib/gems/validatable-1.6.7/lib/validatable_instance_methods.rb +106 -0
  51. data/lib/gems/validatable-1.6.7/lib/validations/validates_acceptance_of.rb +11 -0
  52. data/lib/gems/validatable-1.6.7/lib/validations/validates_confirmation_of.rb +15 -0
  53. data/lib/gems/validatable-1.6.7/lib/validations/validates_each.rb +14 -0
  54. data/lib/gems/validatable-1.6.7/lib/validations/validates_format_of.rb +13 -0
  55. data/lib/gems/validatable-1.6.7/lib/validations/validates_length_of.rb +25 -0
  56. data/lib/gems/validatable-1.6.7/lib/validations/validates_numericality_of.rb +16 -0
  57. data/lib/gems/validatable-1.6.7/lib/validations/validates_presence_of.rb +13 -0
  58. data/lib/gems/validatable-1.6.7/lib/validations/validates_true_for.rb +13 -0
  59. data/lib/gems/validatable-1.6.7/lib/validations/validation_base.rb +88 -0
  60. data/lib/gems/validatable-1.6.7/rakefile.rb +50 -0
  61. data/lib/gems/validatable-1.6.7/test/all_tests.rb +1 -0
  62. data/lib/gems/validatable-1.6.7/test/functional/validatable_test.rb +437 -0
  63. data/lib/gems/validatable-1.6.7/test/functional/validates_acceptance_of_test.rb +16 -0
  64. data/lib/gems/validatable-1.6.7/test/functional/validates_confirmation_of_test.rb +56 -0
  65. data/lib/gems/validatable-1.6.7/test/functional/validates_each_test.rb +14 -0
  66. data/lib/gems/validatable-1.6.7/test/functional/validates_format_of_test.rb +34 -0
  67. data/lib/gems/validatable-1.6.7/test/functional/validates_length_of_test.rb +64 -0
  68. data/lib/gems/validatable-1.6.7/test/functional/validates_numericality_of_test.rb +57 -0
  69. data/lib/gems/validatable-1.6.7/test/functional/validates_presence_of_test.rb +16 -0
  70. data/lib/gems/validatable-1.6.7/test/functional/validates_true_for_test.rb +27 -0
  71. data/lib/gems/validatable-1.6.7/test/test_helper.rb +33 -0
  72. data/lib/gems/validatable-1.6.7/test/unit/errors_test.rb +64 -0
  73. data/lib/gems/validatable-1.6.7/test/unit/understandable_test.rb +19 -0
  74. data/lib/gems/validatable-1.6.7/test/unit/validatable_test.rb +38 -0
  75. data/lib/gems/validatable-1.6.7/test/unit/validates_acceptance_of_test.rb +21 -0
  76. data/lib/gems/validatable-1.6.7/test/unit/validates_confirmation_of_test.rb +64 -0
  77. data/lib/gems/validatable-1.6.7/test/unit/validates_format_of_test.rb +34 -0
  78. data/lib/gems/validatable-1.6.7/test/unit/validates_length_of_test.rb +75 -0
  79. data/lib/gems/validatable-1.6.7/test/unit/validates_numericality_of_test.rb +52 -0
  80. data/lib/gems/validatable-1.6.7/test/unit/validates_presence_of_test.rb +25 -0
  81. data/lib/gems/validatable-1.6.7/test/unit/validates_true_for_test.rb +29 -0
  82. data/lib/gems/validatable-1.6.7/test/unit/validation_base_test.rb +52 -0
  83. data/lib/gems/xmpp4r-0.4/CHANGELOG +83 -0
  84. data/lib/gems/xmpp4r-0.4/COPYING +340 -0
  85. data/lib/gems/xmpp4r-0.4/LICENSE +59 -0
  86. data/lib/gems/xmpp4r-0.4/README.rdoc +110 -0
  87. data/lib/gems/xmpp4r-0.4/README_ruby19.txt +43 -0
  88. data/lib/gems/xmpp4r-0.4/Rakefile +262 -0
  89. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/adventure/README +56 -0
  90. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/adventure/adventure.rb +23 -0
  91. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/adventure/adventuremuc.rb +136 -0
  92. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/adventure/cube.xml +15 -0
  93. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/adventure/tower.xml +69 -0
  94. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/adventure/world.rb +424 -0
  95. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/fileserve.conf +11 -0
  96. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/fileserve.rb +346 -0
  97. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/getonline.rb +56 -0
  98. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/gtkmucclient.rb +315 -0
  99. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/migrate.rb +88 -0
  100. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/minimuc.rb +266 -0
  101. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/pep-aggregator/index.xsl +235 -0
  102. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/pep-aggregator/pep-aggregator.rb +147 -0
  103. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/recvfile.rb +84 -0
  104. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/rosterdiscovery.rb +129 -0
  105. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/sendfile.conf +10 -0
  106. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/sendfile.rb +72 -0
  107. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/shellmgr/shellmgr.rb +51 -0
  108. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/shellmgr/shellmgr_jabber.rb +43 -0
  109. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/shellmgr/shellmgr_test.rb +10 -0
  110. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/versionpoll.rb +90 -0
  111. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/xmpping.rb +146 -0
  112. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/xmppingrc.sample +14 -0
  113. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/change_password.rb +41 -0
  114. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/client.rb +70 -0
  115. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/component.rb +11 -0
  116. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/echo.rb +37 -0
  117. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/jabbersend.rb +41 -0
  118. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/mass_sender.rb +68 -0
  119. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/muc_owner_config.rb +12 -0
  120. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/mucinfo.rb +41 -0
  121. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/mucsimplebot.rb +82 -0
  122. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/register.rb +42 -0
  123. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/remove_registration.rb +18 -0
  124. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/roster.rb +44 -0
  125. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/rosterprint.rb +50 -0
  126. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/rosterrename.rb +34 -0
  127. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/rosterwatch.rb +171 -0
  128. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/send_vcard.rb +67 -0
  129. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/tune_client.rb +56 -0
  130. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/tune_server.rb +58 -0
  131. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/versionbot.rb +75 -0
  132. data/lib/gems/xmpp4r-0.4/lib/xmpp4r.rb +116 -0
  133. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/base64.rb +32 -0
  134. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/bytestreams.rb +15 -0
  135. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/bytestreams/helper/filetransfer.rb +319 -0
  136. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/bytestreams/helper/ibb/base.rb +257 -0
  137. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/bytestreams/helper/ibb/initiator.rb +31 -0
  138. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/bytestreams/helper/ibb/target.rb +47 -0
  139. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/bytestreams/helper/socks5bytestreams/base.rb +152 -0
  140. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/bytestreams/helper/socks5bytestreams/initiator.rb +86 -0
  141. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/bytestreams/helper/socks5bytestreams/server.rb +198 -0
  142. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/bytestreams/helper/socks5bytestreams/socks5.rb +65 -0
  143. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/bytestreams/helper/socks5bytestreams/target.rb +73 -0
  144. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/bytestreams/helper/socks5bytestreams/target.rb.orig +62 -0
  145. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/bytestreams/iq/bytestreams.rb +170 -0
  146. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/bytestreams/iq/si.rb +206 -0
  147. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/callbacks.rb +124 -0
  148. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/caps.rb +1 -0
  149. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/caps/c.rb +53 -0
  150. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/caps/helper/generator.rb +160 -0
  151. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/caps/helper/helper.rb +87 -0
  152. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/client.rb +317 -0
  153. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/command/helper/responder.rb +53 -0
  154. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/command/iq/command.rb +154 -0
  155. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/component.rb +103 -0
  156. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/connection.rb +219 -0
  157. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/dataforms.rb +5 -0
  158. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/dataforms/x/data.rb +297 -0
  159. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/debuglog.rb +42 -0
  160. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/delay.rb +5 -0
  161. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/delay/x/delay.rb +99 -0
  162. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/discovery.rb +7 -0
  163. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/discovery/helper/responder.rb +165 -0
  164. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/discovery/iq/discoinfo.rb +211 -0
  165. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/discovery/iq/discoitems.rb +147 -0
  166. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/errors.rb +281 -0
  167. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/feature_negotiation.rb +5 -0
  168. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/feature_negotiation/iq/feature.rb +28 -0
  169. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/framework/base.rb +55 -0
  170. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/framework/bot.rb +148 -0
  171. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/httpbinding.rb +5 -0
  172. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/httpbinding/client.rb +285 -0
  173. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/idgenerator.rb +37 -0
  174. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/iq.rb +221 -0
  175. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/jid.rb +167 -0
  176. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/message.rb +148 -0
  177. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/muc.rb +14 -0
  178. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/muc/helper/mucbrowser.rb +92 -0
  179. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/muc/helper/mucclient.rb +462 -0
  180. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/muc/helper/simplemucclient.rb +332 -0
  181. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/muc/iq/mucadmin.rb +23 -0
  182. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/muc/iq/mucadminitem.rb +20 -0
  183. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/muc/iq/mucowner.rb +15 -0
  184. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/muc/item.rb +143 -0
  185. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/muc/x/muc.rb +70 -0
  186. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/muc/x/mucuserinvite.rb +60 -0
  187. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/muc/x/mucuseritem.rb +36 -0
  188. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/presence.rb +232 -0
  189. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub.rb +8 -0
  190. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/children/configuration.rb +86 -0
  191. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/children/event.rb +49 -0
  192. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/children/item.rb +35 -0
  193. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/children/items.rb +44 -0
  194. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/children/node_config.rb +48 -0
  195. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/children/publish.rb +24 -0
  196. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/children/subscription.rb +62 -0
  197. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/children/subscription_config.rb +67 -0
  198. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/children/unsubscribe.rb +48 -0
  199. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/helper/nodebrowser.rb +130 -0
  200. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/helper/nodehelper.rb +156 -0
  201. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/helper/servicehelper.rb +417 -0
  202. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/iq/pubsub.rb +19 -0
  203. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/query.rb +15 -0
  204. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/rexmladdons.rb +151 -0
  205. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/roster.rb +7 -0
  206. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/roster/helper/roster.rb +519 -0
  207. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/roster/iq/roster.rb +215 -0
  208. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/roster/x/roster.rb +138 -0
  209. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/rpc.rb +2 -0
  210. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/rpc/helper/client.rb +123 -0
  211. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/rpc/helper/server.rb +74 -0
  212. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/rpc/helper/xmlrpcaddons.rb +67 -0
  213. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/rpc/iq/rpc.rb +23 -0
  214. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/sasl.rb +237 -0
  215. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/semaphore.rb +38 -0
  216. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/stream.rb +497 -0
  217. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/streamparser.rb +77 -0
  218. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/tune.rb +2 -0
  219. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/tune/helper/helper.rb +58 -0
  220. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/tune/tune.rb +113 -0
  221. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/vcard.rb +6 -0
  222. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/vcard/helper/vcard.rb +84 -0
  223. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/vcard/iq/vcard.rb +109 -0
  224. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/version.rb +7 -0
  225. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/version/helper/responder.rb +72 -0
  226. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/version/helper/simpleresponder.rb +44 -0
  227. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/version/iq/version.rb +105 -0
  228. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/x.rb +37 -0
  229. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/xhtml.rb +1 -0
  230. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/xhtml/html.rb +115 -0
  231. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/xmpp4r.rb +18 -0
  232. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/xmppelement.rb +168 -0
  233. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/xmppstanza.rb +162 -0
  234. data/lib/gems/xmpp4r-0.4/setup.rb +1586 -0
  235. data/lib/gems/xmpp4r-0.4/test/bytestreams/tc_ibb.rb +186 -0
  236. data/lib/gems/xmpp4r-0.4/test/bytestreams/tc_socks5bytestreams.rb +113 -0
  237. data/lib/gems/xmpp4r-0.4/test/caps/tc_helper.rb +156 -0
  238. data/lib/gems/xmpp4r-0.4/test/dataforms/tc_data.rb +81 -0
  239. data/lib/gems/xmpp4r-0.4/test/delay/tc_xdelay.rb +51 -0
  240. data/lib/gems/xmpp4r-0.4/test/discovery/tc_responder.rb +91 -0
  241. data/lib/gems/xmpp4r-0.4/test/lib/assert_equal_xml.rb +14 -0
  242. data/lib/gems/xmpp4r-0.4/test/lib/clienttester.rb +120 -0
  243. data/lib/gems/xmpp4r-0.4/test/muc/tc_muc_mucclient.rb +830 -0
  244. data/lib/gems/xmpp4r-0.4/test/muc/tc_muc_simplemucclient.rb +114 -0
  245. data/lib/gems/xmpp4r-0.4/test/muc/tc_mucowner.rb +50 -0
  246. data/lib/gems/xmpp4r-0.4/test/pubsub/tc_helper.rb +662 -0
  247. data/lib/gems/xmpp4r-0.4/test/pubsub/tc_nodeconfig.rb +54 -0
  248. data/lib/gems/xmpp4r-0.4/test/pubsub/tc_subscriptionconfig.rb +41 -0
  249. data/lib/gems/xmpp4r-0.4/test/roster/tc_helper.rb +514 -0
  250. data/lib/gems/xmpp4r-0.4/test/roster/tc_iqqueryroster.rb +173 -0
  251. data/lib/gems/xmpp4r-0.4/test/roster/tc_xroster.rb +73 -0
  252. data/lib/gems/xmpp4r-0.4/test/rpc/tc_helper.rb +96 -0
  253. data/lib/gems/xmpp4r-0.4/test/tc_callbacks.rb +129 -0
  254. data/lib/gems/xmpp4r-0.4/test/tc_class_names.rb +146 -0
  255. data/lib/gems/xmpp4r-0.4/test/tc_client.rb +30 -0
  256. data/lib/gems/xmpp4r-0.4/test/tc_errors.rb +146 -0
  257. data/lib/gems/xmpp4r-0.4/test/tc_idgenerator.rb +30 -0
  258. data/lib/gems/xmpp4r-0.4/test/tc_iq.rb +113 -0
  259. data/lib/gems/xmpp4r-0.4/test/tc_iqquery.rb +31 -0
  260. data/lib/gems/xmpp4r-0.4/test/tc_jid.rb +204 -0
  261. data/lib/gems/xmpp4r-0.4/test/tc_message.rb +116 -0
  262. data/lib/gems/xmpp4r-0.4/test/tc_presence.rb +150 -0
  263. data/lib/gems/xmpp4r-0.4/test/tc_rexml.rb +139 -0
  264. data/lib/gems/xmpp4r-0.4/test/tc_stream.rb +229 -0
  265. data/lib/gems/xmpp4r-0.4/test/tc_streamComponent.rb +95 -0
  266. data/lib/gems/xmpp4r-0.4/test/tc_streamError.rb +131 -0
  267. data/lib/gems/xmpp4r-0.4/test/tc_streamSend.rb +59 -0
  268. data/lib/gems/xmpp4r-0.4/test/tc_streamparser.rb +112 -0
  269. data/lib/gems/xmpp4r-0.4/test/tc_xmppstanza.rb +135 -0
  270. data/lib/gems/xmpp4r-0.4/test/ts_xmpp4r.rb +53 -0
  271. data/lib/gems/xmpp4r-0.4/test/tune/tc_helper_recv.rb +84 -0
  272. data/lib/gems/xmpp4r-0.4/test/tune/tc_helper_send.rb +74 -0
  273. data/lib/gems/xmpp4r-0.4/test/tune/tc_tune.rb +79 -0
  274. data/lib/gems/xmpp4r-0.4/test/vcard/tc_helper.rb +49 -0
  275. data/lib/gems/xmpp4r-0.4/test/vcard/tc_iqvcard.rb +62 -0
  276. data/lib/gems/xmpp4r-0.4/test/version/tc_helper.rb +60 -0
  277. data/lib/gems/xmpp4r-0.4/test/version/tc_iqqueryversion.rb +97 -0
  278. data/lib/gems/xmpp4r-0.4/test/xhtml/tc_html.rb +41 -0
  279. data/lib/gems/xmpp4r-0.4/tools/gen_requires.bash +31 -0
  280. data/lib/gems/xmpp4r-0.4/tools/xmpp4r-gemspec-test.rb +11 -0
  281. data/lib/gems/xmpp4r-0.4/xmpp4r.gemspec +291 -0
  282. data/lib/gems/xmpp4r-simple-0.8.8/CHANGELOG +73 -0
  283. data/lib/gems/xmpp4r-simple-0.8.8/COPYING +281 -0
  284. data/lib/gems/xmpp4r-simple-0.8.8/README +59 -0
  285. data/lib/gems/xmpp4r-simple-0.8.8/lib/xmpp4r-simple.rb +492 -0
  286. data/lib/gems/xmpp4r-simple-0.8.8/test/test_xmpp4r_simple.rb +242 -0
  287. data/lib/mack-notifier.rb +1 -3
  288. metadata +398 -46
@@ -0,0 +1,9 @@
1
+ #:stopdoc:
2
+ # This is here for Rolls.
3
+ # Rolls uses this instead of lib/tmail.rb.
4
+
5
+ require 'tmail/version'
6
+ require 'tmail/mail'
7
+ require 'tmail/mailbox'
8
+ require 'tmail/core_extensions'
9
+ #:startdoc:
@@ -0,0 +1,1125 @@
1
+ =begin rdoc
2
+
3
+ = interface.rb Provides an interface to the TMail object
4
+
5
+ =end
6
+ #--
7
+ # Copyright (c) 1998-2003 Minero Aoki <aamine@loveruby.net>
8
+ #
9
+ # Permission is hereby granted, free of charge, to any person obtaining
10
+ # a copy of this software and associated documentation files (the
11
+ # "Software"), to deal in the Software without restriction, including
12
+ # without limitation the rights to use, copy, modify, merge, publish,
13
+ # distribute, sublicense, and/or sell copies of the Software, and to
14
+ # permit persons to whom the Software is furnished to do so, subject to
15
+ # the following conditions:
16
+ #
17
+ # The above copyright notice and this permission notice shall be
18
+ # included in all copies or substantial portions of the Software.
19
+ #
20
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27
+ #
28
+ # Note: Originally licensed under LGPL v2+. Using MIT license for Rails
29
+ # with permission of Minero Aoki.
30
+ #++
31
+
32
+ # TMail::Mail objects get accessed primarily through the methods in this file.
33
+ #
34
+ #
35
+
36
+ require 'tmail/utils'
37
+
38
+ module TMail
39
+
40
+ class Mail
41
+
42
+ # Allows you to query the mail object with a string to get the contents
43
+ # of the field you want.
44
+ #
45
+ # Returns a string of the exact contnts of the field
46
+ #
47
+ # mail.from = "mikel <mikel@lindsaar.net>"
48
+ # mail.header_string("From") #=> "mikel <mikel@lindsaar.net>"
49
+ def header_string( name, default = nil )
50
+ h = @header[name.downcase] or return default
51
+ h.to_s
52
+ end
53
+
54
+ #:stopdoc:
55
+ #--
56
+ #== Attributes
57
+
58
+ include TextUtils
59
+
60
+ def set_string_array_attr( key, strs )
61
+ strs.flatten!
62
+ if strs.empty?
63
+ @header.delete key.downcase
64
+ else
65
+ store key, strs.join(', ')
66
+ end
67
+ strs
68
+ end
69
+ private :set_string_array_attr
70
+
71
+ def set_string_attr( key, str )
72
+ if str
73
+ store key, str
74
+ else
75
+ @header.delete key.downcase
76
+ end
77
+ str
78
+ end
79
+ private :set_string_attr
80
+
81
+ def set_addrfield( name, arg )
82
+ if arg
83
+ h = HeaderField.internal_new(name, @config)
84
+ h.addrs.replace [arg].flatten
85
+ @header[name] = h
86
+ else
87
+ @header.delete name
88
+ end
89
+ arg
90
+ end
91
+ private :set_addrfield
92
+
93
+ def addrs2specs( addrs )
94
+ return nil unless addrs
95
+ list = addrs.map {|addr|
96
+ if addr.address_group?
97
+ then addr.map {|a| a.spec }
98
+ else addr.spec
99
+ end
100
+ }.flatten
101
+ return nil if list.empty?
102
+ list
103
+ end
104
+ private :addrs2specs
105
+
106
+ #:startdoc:
107
+
108
+ #== Date and Time methods
109
+
110
+ # Returns the date of the email message as per the "date" header value or returns
111
+ # nil by default (if no date field exists).
112
+ #
113
+ # You can also pass whatever default you want into this method and it will return
114
+ # that instead of nil if there is no date already set.
115
+ def date( default = nil )
116
+ if h = @header['date']
117
+ h.date
118
+ else
119
+ default
120
+ end
121
+ end
122
+
123
+ # Destructively sets the date of the mail object with the passed Time instance,
124
+ # returns a Time instance set to the date/time of the mail
125
+ #
126
+ # Example:
127
+ #
128
+ # now = Time.now
129
+ # mail.date = now
130
+ # mail.date #=> Sat Nov 03 18:47:50 +1100 2007
131
+ # mail.date.class #=> Time
132
+ def date=( time )
133
+ if time
134
+ store 'Date', time2str(time)
135
+ else
136
+ @header.delete 'date'
137
+ end
138
+ time
139
+ end
140
+
141
+ # Returns the time of the mail message formatted to your taste using a
142
+ # strftime format string. If no date set returns nil by default or whatever value
143
+ # you pass as the second optional parameter.
144
+ #
145
+ # time = Time.now # (on Nov 16 2007)
146
+ # mail.date = time
147
+ # mail.strftime("%D") #=> "11/16/07"
148
+ def strftime( fmt, default = nil )
149
+ if t = date
150
+ t.strftime(fmt)
151
+ else
152
+ default
153
+ end
154
+ end
155
+
156
+ #== Destination methods
157
+
158
+ # Return a TMail::Addresses instance for each entry in the "To:" field of the mail object header.
159
+ #
160
+ # If the "To:" field does not exist, will return nil by default or the value you
161
+ # pass as the optional parameter.
162
+ #
163
+ # Example:
164
+ #
165
+ # mail = TMail::Mail.new
166
+ # mail.to_addrs #=> nil
167
+ # mail.to_addrs([]) #=> []
168
+ # mail.to = "Mikel <mikel@me.org>, another Mikel <mikel@you.org>"
169
+ # mail.to_addrs #=> [#<TMail::Address mikel@me.org>, #<TMail::Address mikel@you.org>]
170
+ def to_addrs( default = nil )
171
+ if h = @header['to']
172
+ h.addrs
173
+ else
174
+ default
175
+ end
176
+ end
177
+
178
+ # Return a TMail::Addresses instance for each entry in the "Cc:" field of the mail object header.
179
+ #
180
+ # If the "Cc:" field does not exist, will return nil by default or the value you
181
+ # pass as the optional parameter.
182
+ #
183
+ # Example:
184
+ #
185
+ # mail = TMail::Mail.new
186
+ # mail.cc_addrs #=> nil
187
+ # mail.cc_addrs([]) #=> []
188
+ # mail.cc = "Mikel <mikel@me.org>, another Mikel <mikel@you.org>"
189
+ # mail.cc_addrs #=> [#<TMail::Address mikel@me.org>, #<TMail::Address mikel@you.org>]
190
+ def cc_addrs( default = nil )
191
+ if h = @header['cc']
192
+ h.addrs
193
+ else
194
+ default
195
+ end
196
+ end
197
+
198
+ # Return a TMail::Addresses instance for each entry in the "Bcc:" field of the mail object header.
199
+ #
200
+ # If the "Bcc:" field does not exist, will return nil by default or the value you
201
+ # pass as the optional parameter.
202
+ #
203
+ # Example:
204
+ #
205
+ # mail = TMail::Mail.new
206
+ # mail.bcc_addrs #=> nil
207
+ # mail.bcc_addrs([]) #=> []
208
+ # mail.bcc = "Mikel <mikel@me.org>, another Mikel <mikel@you.org>"
209
+ # mail.bcc_addrs #=> [#<TMail::Address mikel@me.org>, #<TMail::Address mikel@you.org>]
210
+ def bcc_addrs( default = nil )
211
+ if h = @header['bcc']
212
+ h.addrs
213
+ else
214
+ default
215
+ end
216
+ end
217
+
218
+ # Destructively set the to field of the "To:" header to equal the passed in string.
219
+ #
220
+ # TMail will parse your contents and turn each valid email address into a TMail::Address
221
+ # object before assigning it to the mail message.
222
+ #
223
+ # Example:
224
+ #
225
+ # mail = TMail::Mail.new
226
+ # mail.to = "Mikel <mikel@me.org>, another Mikel <mikel@you.org>"
227
+ # mail.to_addrs #=> [#<TMail::Address mikel@me.org>, #<TMail::Address mikel@you.org>]
228
+ def to_addrs=( arg )
229
+ set_addrfield 'to', arg
230
+ end
231
+
232
+ # Destructively set the to field of the "Cc:" header to equal the passed in string.
233
+ #
234
+ # TMail will parse your contents and turn each valid email address into a TMail::Address
235
+ # object before assigning it to the mail message.
236
+ #
237
+ # Example:
238
+ #
239
+ # mail = TMail::Mail.new
240
+ # mail.cc = "Mikel <mikel@me.org>, another Mikel <mikel@you.org>"
241
+ # mail.cc_addrs #=> [#<TMail::Address mikel@me.org>, #<TMail::Address mikel@you.org>]
242
+ def cc_addrs=( arg )
243
+ set_addrfield 'cc', arg
244
+ end
245
+
246
+ # Destructively set the to field of the "Bcc:" header to equal the passed in string.
247
+ #
248
+ # TMail will parse your contents and turn each valid email address into a TMail::Address
249
+ # object before assigning it to the mail message.
250
+ #
251
+ # Example:
252
+ #
253
+ # mail = TMail::Mail.new
254
+ # mail.bcc = "Mikel <mikel@me.org>, another Mikel <mikel@you.org>"
255
+ # mail.bcc_addrs #=> [#<TMail::Address mikel@me.org>, #<TMail::Address mikel@you.org>]
256
+ def bcc_addrs=( arg )
257
+ set_addrfield 'bcc', arg
258
+ end
259
+
260
+ # Returns who the email is to as an Array of email addresses as opposed to an Array of
261
+ # TMail::Address objects which is what Mail#to_addrs returns
262
+ #
263
+ # Example:
264
+ #
265
+ # mail = TMail::Mail.new
266
+ # mail.to = "Mikel <mikel@me.org>, another Mikel <mikel@you.org>"
267
+ # mail.to #=> ["mikel@me.org", "mikel@you.org"]
268
+ def to( default = nil )
269
+ addrs2specs(to_addrs(nil)) || default
270
+ end
271
+
272
+ # Returns who the email cc'd as an Array of email addresses as opposed to an Array of
273
+ # TMail::Address objects which is what Mail#to_addrs returns
274
+ #
275
+ # Example:
276
+ #
277
+ # mail = TMail::Mail.new
278
+ # mail.cc = "Mikel <mikel@me.org>, another Mikel <mikel@you.org>"
279
+ # mail.cc #=> ["mikel@me.org", "mikel@you.org"]
280
+ def cc( default = nil )
281
+ addrs2specs(cc_addrs(nil)) || default
282
+ end
283
+
284
+ # Returns who the email bcc'd as an Array of email addresses as opposed to an Array of
285
+ # TMail::Address objects which is what Mail#to_addrs returns
286
+ #
287
+ # Example:
288
+ #
289
+ # mail = TMail::Mail.new
290
+ # mail.bcc = "Mikel <mikel@me.org>, another Mikel <mikel@you.org>"
291
+ # mail.bcc #=> ["mikel@me.org", "mikel@you.org"]
292
+ def bcc( default = nil )
293
+ addrs2specs(bcc_addrs(nil)) || default
294
+ end
295
+
296
+ # Destructively sets the "To:" field to the passed array of strings (which should be valid
297
+ # email addresses)
298
+ #
299
+ # Example:
300
+ #
301
+ # mail = TMail::Mail.new
302
+ # mail.to = ["mikel@abc.com", "Mikel <mikel@xyz.com>"]
303
+ # mail.to #=> ["mikel@abc.org", "mikel@xyz.org"]
304
+ # mail['to'].to_s #=> "mikel@abc.com, Mikel <mikel@xyz.com>"
305
+ def to=( *strs )
306
+ set_string_array_attr 'To', strs
307
+ end
308
+
309
+ # Destructively sets the "Cc:" field to the passed array of strings (which should be valid
310
+ # email addresses)
311
+ #
312
+ # Example:
313
+ #
314
+ # mail = TMail::Mail.new
315
+ # mail.cc = ["mikel@abc.com", "Mikel <mikel@xyz.com>"]
316
+ # mail.cc #=> ["mikel@abc.org", "mikel@xyz.org"]
317
+ # mail['cc'].to_s #=> "mikel@abc.com, Mikel <mikel@xyz.com>"
318
+ def cc=( *strs )
319
+ set_string_array_attr 'Cc', strs
320
+ end
321
+
322
+ # Destructively sets the "Bcc:" field to the passed array of strings (which should be valid
323
+ # email addresses)
324
+ #
325
+ # Example:
326
+ #
327
+ # mail = TMail::Mail.new
328
+ # mail.bcc = ["mikel@abc.com", "Mikel <mikel@xyz.com>"]
329
+ # mail.bcc #=> ["mikel@abc.org", "mikel@xyz.org"]
330
+ # mail['bcc'].to_s #=> "mikel@abc.com, Mikel <mikel@xyz.com>"
331
+ def bcc=( *strs )
332
+ set_string_array_attr 'Bcc', strs
333
+ end
334
+
335
+ #== Originator methods
336
+
337
+ # Return a TMail::Addresses instance for each entry in the "From:" field of the mail object header.
338
+ #
339
+ # If the "From:" field does not exist, will return nil by default or the value you
340
+ # pass as the optional parameter.
341
+ #
342
+ # Example:
343
+ #
344
+ # mail = TMail::Mail.new
345
+ # mail.from_addrs #=> nil
346
+ # mail.from_addrs([]) #=> []
347
+ # mail.from = "Mikel <mikel@me.org>, another Mikel <mikel@you.org>"
348
+ # mail.from_addrs #=> [#<TMail::Address mikel@me.org>, #<TMail::Address mikel@you.org>]
349
+ def from_addrs( default = nil )
350
+ if h = @header['from']
351
+ h.addrs
352
+ else
353
+ default
354
+ end
355
+ end
356
+
357
+ # Destructively set the to value of the "From:" header to equal the passed in string.
358
+ #
359
+ # TMail will parse your contents and turn each valid email address into a TMail::Address
360
+ # object before assigning it to the mail message.
361
+ #
362
+ # Example:
363
+ #
364
+ # mail = TMail::Mail.new
365
+ # mail.from_addrs = "Mikel <mikel@me.org>, another Mikel <mikel@you.org>"
366
+ # mail.from_addrs #=> [#<TMail::Address mikel@me.org>, #<TMail::Address mikel@you.org>]
367
+ def from_addrs=( arg )
368
+ set_addrfield 'from', arg
369
+ end
370
+
371
+ # Returns who the email is from as an Array of email address strings instead to an Array of
372
+ # TMail::Address objects which is what Mail#from_addrs returns
373
+ #
374
+ # Example:
375
+ #
376
+ # mail = TMail::Mail.new
377
+ # mail.from = "Mikel <mikel@me.org>, another Mikel <mikel@you.org>"
378
+ # mail.from #=> ["mikel@me.org", "mikel@you.org"]
379
+ def from( default = nil )
380
+ addrs2specs(from_addrs(nil)) || default
381
+ end
382
+
383
+ # Destructively sets the "From:" field to the passed array of strings (which should be valid
384
+ # email addresses)
385
+ #
386
+ # Example:
387
+ #
388
+ # mail = TMail::Mail.new
389
+ # mail.from = ["mikel@abc.com", "Mikel <mikel@xyz.com>"]
390
+ # mail.from #=> ["mikel@abc.org", "mikel@xyz.org"]
391
+ # mail['from'].to_s #=> "mikel@abc.com, Mikel <mikel@xyz.com>"
392
+ def from=( *strs )
393
+ set_string_array_attr 'From', strs
394
+ end
395
+
396
+ # Returns the "friendly" human readable part of the address
397
+ #
398
+ # Example:
399
+ #
400
+ # mail = TMail::Mail.new
401
+ # mail.from = "Mikel Lindsaar <mikel@abc.com>"
402
+ # mail.friendly_from #=> "Mikel Lindsaar"
403
+ def friendly_from( default = nil )
404
+ h = @header['from']
405
+ a, = h.addrs
406
+ return default unless a
407
+ return a.phrase if a.phrase
408
+ return h.comments.join(' ') unless h.comments.empty?
409
+ a.spec
410
+ end
411
+
412
+ # Return a TMail::Addresses instance for each entry in the "Reply-To:" field of the mail object header.
413
+ #
414
+ # If the "Reply-To:" field does not exist, will return nil by default or the value you
415
+ # pass as the optional parameter.
416
+ #
417
+ # Example:
418
+ #
419
+ # mail = TMail::Mail.new
420
+ # mail.reply_to_addrs #=> nil
421
+ # mail.reply_to_addrs([]) #=> []
422
+ # mail.reply_to = "Mikel <mikel@me.org>, another Mikel <mikel@you.org>"
423
+ # mail.reply_to_addrs #=> [#<TMail::Address mikel@me.org>, #<TMail::Address mikel@you.org>]
424
+ def reply_to_addrs( default = nil )
425
+ if h = @header['reply-to']
426
+ h.addrs.blank? ? default : h.addrs
427
+ else
428
+ default
429
+ end
430
+ end
431
+
432
+ # Destructively set the to value of the "Reply-To:" header to equal the passed in argument.
433
+ #
434
+ # TMail will parse your contents and turn each valid email address into a TMail::Address
435
+ # object before assigning it to the mail message.
436
+ #
437
+ # Example:
438
+ #
439
+ # mail = TMail::Mail.new
440
+ # mail.reply_to_addrs = "Mikel <mikel@me.org>, another Mikel <mikel@you.org>"
441
+ # mail.reply_to_addrs #=> [#<TMail::Address mikel@me.org>, #<TMail::Address mikel@you.org>]
442
+ def reply_to_addrs=( arg )
443
+ set_addrfield 'reply-to', arg
444
+ end
445
+
446
+ # Returns who the email is from as an Array of email address strings instead to an Array of
447
+ # TMail::Address objects which is what Mail#reply_to_addrs returns
448
+ #
449
+ # Example:
450
+ #
451
+ # mail = TMail::Mail.new
452
+ # mail.reply_to = "Mikel <mikel@me.org>, another Mikel <mikel@you.org>"
453
+ # mail.reply_to #=> ["mikel@me.org", "mikel@you.org"]
454
+ def reply_to( default = nil )
455
+ addrs2specs(reply_to_addrs(nil)) || default
456
+ end
457
+
458
+ # Destructively sets the "Reply-To:" field to the passed array of strings (which should be valid
459
+ # email addresses)
460
+ #
461
+ # Example:
462
+ #
463
+ # mail = TMail::Mail.new
464
+ # mail.reply_to = ["mikel@abc.com", "Mikel <mikel@xyz.com>"]
465
+ # mail.reply_to #=> ["mikel@abc.org", "mikel@xyz.org"]
466
+ # mail['reply_to'].to_s #=> "mikel@abc.com, Mikel <mikel@xyz.com>"
467
+ def reply_to=( *strs )
468
+ set_string_array_attr 'Reply-To', strs
469
+ end
470
+
471
+ # Return a TMail::Addresses instance of the "Sender:" field of the mail object header.
472
+ #
473
+ # If the "Sender:" field does not exist, will return nil by default or the value you
474
+ # pass as the optional parameter.
475
+ #
476
+ # Example:
477
+ #
478
+ # mail = TMail::Mail.new
479
+ # mail.sender #=> nil
480
+ # mail.sender([]) #=> []
481
+ # mail.sender = "Mikel <mikel@me.org>"
482
+ # mail.reply_to_addrs #=> [#<TMail::Address mikel@me.org>]
483
+ def sender_addr( default = nil )
484
+ f = @header['sender'] or return default
485
+ f.addr or return default
486
+ end
487
+
488
+ # Destructively set the to value of the "Sender:" header to equal the passed in argument.
489
+ #
490
+ # TMail will parse your contents and turn each valid email address into a TMail::Address
491
+ # object before assigning it to the mail message.
492
+ #
493
+ # Example:
494
+ #
495
+ # mail = TMail::Mail.new
496
+ # mail.sender_addrs = "Mikel <mikel@me.org>, another Mikel <mikel@you.org>"
497
+ # mail.sender_addrs #=> [#<TMail::Address mikel@me.org>, #<TMail::Address mikel@you.org>]
498
+ def sender_addr=( addr )
499
+ if addr
500
+ h = HeaderField.internal_new('sender', @config)
501
+ h.addr = addr
502
+ @header['sender'] = h
503
+ else
504
+ @header.delete 'sender'
505
+ end
506
+ addr
507
+ end
508
+
509
+ # Returns who the sender of this mail is as string instead to an Array of
510
+ # TMail::Address objects which is what Mail#sender_addr returns
511
+ #
512
+ # Example:
513
+ #
514
+ # mail = TMail::Mail.new
515
+ # mail.sender = "Mikel <mikel@me.org>"
516
+ # mail.sender #=> "mikel@me.org"
517
+ def sender( default = nil )
518
+ f = @header['sender'] or return default
519
+ a = f.addr or return default
520
+ a.spec
521
+ end
522
+
523
+ # Destructively sets the "Sender:" field to the passed string (which should be a valid
524
+ # email address)
525
+ #
526
+ # Example:
527
+ #
528
+ # mail = TMail::Mail.new
529
+ # mail.sender = "mikel@abc.com"
530
+ # mail.sender #=> "mikel@abc.org"
531
+ # mail['sender'].to_s #=> "mikel@abc.com"
532
+ def sender=( str )
533
+ set_string_attr 'Sender', str
534
+ end
535
+
536
+ #== Subject methods
537
+
538
+ # Returns the subject of the mail instance.
539
+ #
540
+ # If the subject field does not exist, returns nil by default or you can pass in as
541
+ # the parameter for what you want the default value to be.
542
+ #
543
+ # Example:
544
+ #
545
+ # mail = TMail::Mail.new
546
+ # mail.subject #=> nil
547
+ # mail.subject("") #=> ""
548
+ # mail.subject = "Hello"
549
+ # mail.subject #=> "Hello"
550
+ def subject( default = nil )
551
+ if h = @header['subject']
552
+ h.body
553
+ else
554
+ default
555
+ end
556
+ end
557
+ alias quoted_subject subject
558
+
559
+ # Destructively sets the passed string as the subject of the mail message.
560
+ #
561
+ # Example
562
+ #
563
+ # mail = TMail::Mail.new
564
+ # mail.subject #=> "This subject"
565
+ # mail.subject = "Another subject"
566
+ # mail.subject #=> "Another subject"
567
+ def subject=( str )
568
+ set_string_attr 'Subject', str
569
+ end
570
+
571
+ #== Message Identity & Threading Methods
572
+
573
+ # Returns the message ID for this mail object instance.
574
+ #
575
+ # If the message_id field does not exist, returns nil by default or you can pass in as
576
+ # the parameter for what you want the default value to be.
577
+ #
578
+ # Example:
579
+ #
580
+ # mail = TMail::Mail.new
581
+ # mail.message_id #=> nil
582
+ # mail.message_id(TMail.new_message_id) #=> "<47404c5326d9c_2ad4fbb80161@baci.local.tmail>"
583
+ # mail.message_id = TMail.new_message_id
584
+ # mail.message_id #=> "<47404c5326d9c_2ad4fbb80161@baci.local.tmail>"
585
+ def message_id( default = nil )
586
+ if h = @header['message-id']
587
+ h.id || default
588
+ else
589
+ default
590
+ end
591
+ end
592
+
593
+ # Destructively sets the message ID of the mail object instance to the passed in string
594
+ #
595
+ # Example:
596
+ #
597
+ # mail = TMail::Mail.new
598
+ # mail.message_id = "this_is_my_badly_formatted_message_id"
599
+ # mail.message_id #=> "this_is_my_badly_formatted_message_id"
600
+ def message_id=( str )
601
+ set_string_attr 'Message-Id', str
602
+ end
603
+
604
+ # Returns the "In-Reply-To:" field contents as an array of this mail instance if it exists
605
+ #
606
+ # If the in_reply_to field does not exist, returns nil by default or you can pass in as
607
+ # the parameter for what you want the default value to be.
608
+ #
609
+ # Example:
610
+ #
611
+ # mail = TMail::Mail.new
612
+ # mail.in_reply_to #=> nil
613
+ # mail.in_reply_to([]) #=> []
614
+ # TMail::Mail.load("../test/fixtures/raw_email_reply")
615
+ # mail.in_reply_to #=> ["<348F04F142D69C21-291E56D292BC@xxxx.net>"]
616
+ def in_reply_to( default = nil )
617
+ if h = @header['in-reply-to']
618
+ h.ids
619
+ else
620
+ default
621
+ end
622
+ end
623
+
624
+ # Destructively sets the value of the "In-Reply-To:" field of an email.
625
+ #
626
+ # Accepts an array of a single string of a message id
627
+ #
628
+ # Example:
629
+ #
630
+ # mail = TMail::Mail.new
631
+ # mail.in_reply_to = ["<348F04F142D69C21-291E56D292BC@xxxx.net>"]
632
+ # mail.in_reply_to #=> ["<348F04F142D69C21-291E56D292BC@xxxx.net>"]
633
+ def in_reply_to=( *idstrs )
634
+ set_string_array_attr 'In-Reply-To', idstrs
635
+ end
636
+
637
+ # Returns the references of this email (prior messages relating to this message)
638
+ # as an array of message ID strings. Useful when you are trying to thread an
639
+ # email.
640
+ #
641
+ # If the references field does not exist, returns nil by default or you can pass in as
642
+ # the parameter for what you want the default value to be.
643
+ #
644
+ # Example:
645
+ #
646
+ # mail = TMail::Mail.new
647
+ # mail.references #=> nil
648
+ # mail.references([]) #=> []
649
+ # mail = TMail::Mail.load("../test/fixtures/raw_email_reply")
650
+ # mail.references #=> ["<473FF3B8.9020707@xxx.org>", "<348F04F142D69C21-291E56D292BC@xxxx.net>"]
651
+ def references( default = nil )
652
+ if h = @header['references']
653
+ h.refs
654
+ else
655
+ default
656
+ end
657
+ end
658
+
659
+ # Destructively sets the value of the "References:" field of an email.
660
+ #
661
+ # Accepts an array of strings of message IDs
662
+ #
663
+ # Example:
664
+ #
665
+ # mail = TMail::Mail.new
666
+ # mail.references = ["<348F04F142D69C21-291E56D292BC@xxxx.net>"]
667
+ # mail.references #=> ["<348F04F142D69C21-291E56D292BC@xxxx.net>"]
668
+ def references=( *strs )
669
+ set_string_array_attr 'References', strs
670
+ end
671
+
672
+ #== MIME header methods
673
+
674
+ # Returns the listed MIME version of this email from the "Mime-Version:" header field
675
+ #
676
+ # If the mime_version field does not exist, returns nil by default or you can pass in as
677
+ # the parameter for what you want the default value to be.
678
+ #
679
+ # Example:
680
+ #
681
+ # mail = TMail::Mail.new
682
+ # mail.mime_version #=> nil
683
+ # mail.mime_version([]) #=> []
684
+ # mail = TMail::Mail.load("../test/fixtures/raw_email")
685
+ # mail.mime_version #=> "1.0"
686
+ def mime_version( default = nil )
687
+ if h = @header['mime-version']
688
+ h.version || default
689
+ else
690
+ default
691
+ end
692
+ end
693
+
694
+ def mime_version=( m, opt = nil )
695
+ if opt
696
+ if h = @header['mime-version']
697
+ h.major = m
698
+ h.minor = opt
699
+ else
700
+ store 'Mime-Version', "#{m}.#{opt}"
701
+ end
702
+ else
703
+ store 'Mime-Version', m
704
+ end
705
+ m
706
+ end
707
+
708
+ # Returns the current "Content-Type" of the mail instance.
709
+ #
710
+ # If the content_type field does not exist, returns nil by default or you can pass in as
711
+ # the parameter for what you want the default value to be.
712
+ #
713
+ # Example:
714
+ #
715
+ # mail = TMail::Mail.new
716
+ # mail.content_type #=> nil
717
+ # mail.content_type([]) #=> []
718
+ # mail = TMail::Mail.load("../test/fixtures/raw_email")
719
+ # mail.content_type #=> "text/plain"
720
+ def content_type( default = nil )
721
+ if h = @header['content-type']
722
+ h.content_type || default
723
+ else
724
+ default
725
+ end
726
+ end
727
+
728
+ # Returns the current main type of the "Content-Type" of the mail instance.
729
+ #
730
+ # If the content_type field does not exist, returns nil by default or you can pass in as
731
+ # the parameter for what you want the default value to be.
732
+ #
733
+ # Example:
734
+ #
735
+ # mail = TMail::Mail.new
736
+ # mail.main_type #=> nil
737
+ # mail.main_type([]) #=> []
738
+ # mail = TMail::Mail.load("../test/fixtures/raw_email")
739
+ # mail.main_type #=> "text"
740
+ def main_type( default = nil )
741
+ if h = @header['content-type']
742
+ h.main_type || default
743
+ else
744
+ default
745
+ end
746
+ end
747
+
748
+ # Returns the current sub type of the "Content-Type" of the mail instance.
749
+ #
750
+ # If the content_type field does not exist, returns nil by default or you can pass in as
751
+ # the parameter for what you want the default value to be.
752
+ #
753
+ # Example:
754
+ #
755
+ # mail = TMail::Mail.new
756
+ # mail.sub_type #=> nil
757
+ # mail.sub_type([]) #=> []
758
+ # mail = TMail::Mail.load("../test/fixtures/raw_email")
759
+ # mail.sub_type #=> "plain"
760
+ def sub_type( default = nil )
761
+ if h = @header['content-type']
762
+ h.sub_type || default
763
+ else
764
+ default
765
+ end
766
+ end
767
+
768
+ # Destructively sets the "Content-Type:" header field of this mail object
769
+ #
770
+ # Allows you to set the main type, sub type as well as parameters to the field.
771
+ # The main type and sub type need to be a string.
772
+ #
773
+ # The optional params hash can be passed with keys as symbols and values as a string,
774
+ # or strings as keys and values.
775
+ #
776
+ # Example:
777
+ #
778
+ # mail = TMail::Mail.new
779
+ # mail.set_content_type("text", "plain")
780
+ # mail.to_s #=> "Content-Type: text/plain\n\n"
781
+ #
782
+ # mail.set_content_type("text", "plain", {:charset => "EUC-KR", :format => "flowed"})
783
+ # mail.to_s #=> "Content-Type: text/plain; charset=EUC-KR; format=flowed\n\n"
784
+ #
785
+ # mail.set_content_type("text", "plain", {"charset" => "EUC-KR", "format" => "flowed"})
786
+ # mail.to_s #=> "Content-Type: text/plain; charset=EUC-KR; format=flowed\n\n"
787
+ def set_content_type( str, sub = nil, param = nil )
788
+ if sub
789
+ main, sub = str, sub
790
+ else
791
+ main, sub = str.split(%r</>, 2)
792
+ raise ArgumentError, "sub type missing: #{str.inspect}" unless sub
793
+ end
794
+ if h = @header['content-type']
795
+ h.main_type = main
796
+ h.sub_type = sub
797
+ h.params.clear
798
+ else
799
+ store 'Content-Type', "#{main}/#{sub}"
800
+ end
801
+ @header['content-type'].params.replace param if param
802
+ str
803
+ end
804
+
805
+ alias content_type= set_content_type
806
+
807
+ # Returns the named type parameter as a string, from the "Content-Type:" header.
808
+ #
809
+ # Example:
810
+ #
811
+ # mail = TMail::Mail.new
812
+ # mail.type_param("charset") #=> nil
813
+ # mail.type_param("charset", []) #=> []
814
+ # mail.set_content_type("text", "plain", {:charset => "EUC-KR", :format => "flowed"})
815
+ # mail.type_param("charset") #=> "EUC-KR"
816
+ # mail.type_param("format") #=> "flowed"
817
+ def type_param( name, default = nil )
818
+ if h = @header['content-type']
819
+ h[name] || default
820
+ else
821
+ default
822
+ end
823
+ end
824
+
825
+ # Returns the character set of the email. Returns nil if no encoding set or returns
826
+ # whatever default you pass as a parameter - note passing the parameter does NOT change
827
+ # the mail object in any way.
828
+ #
829
+ # Example:
830
+ #
831
+ # mail = TMail::Mail.load("path_to/utf8_email")
832
+ # mail.charset #=> "UTF-8"
833
+ #
834
+ # mail = TMail::Mail.new
835
+ # mail.charset #=> nil
836
+ # mail.charset("US-ASCII") #=> "US-ASCII"
837
+ def charset( default = nil )
838
+ if h = @header['content-type']
839
+ h['charset'] or default
840
+ else
841
+ default
842
+ end
843
+ end
844
+
845
+ # Destructively sets the character set used by this mail object to the passed string, you
846
+ # should note though that this does nothing to the mail body, just changes the header
847
+ # value, you will need to transliterate the body as well to match whatever you put
848
+ # in this header value if you are changing character sets.
849
+ #
850
+ # Example:
851
+ #
852
+ # mail = TMail::Mail.new
853
+ # mail.charset #=> nil
854
+ # mail.charset = "UTF-8"
855
+ # mail.charset #=> "UTF-8"
856
+ def charset=( str )
857
+ if str
858
+ if h = @header[ 'content-type' ]
859
+ h['charset'] = str
860
+ else
861
+ store 'Content-Type', "text/plain; charset=#{str}"
862
+ end
863
+ end
864
+ str
865
+ end
866
+
867
+ # Returns the transfer encoding of the email. Returns nil if no encoding set or returns
868
+ # whatever default you pass as a parameter - note passing the parameter does NOT change
869
+ # the mail object in any way.
870
+ #
871
+ # Example:
872
+ #
873
+ # mail = TMail::Mail.load("path_to/base64_encoded_email")
874
+ # mail.transfer_encoding #=> "base64"
875
+ #
876
+ # mail = TMail::Mail.new
877
+ # mail.transfer_encoding #=> nil
878
+ # mail.transfer_encoding("base64") #=> "base64"
879
+ def transfer_encoding( default = nil )
880
+ if h = @header['content-transfer-encoding']
881
+ h.encoding || default
882
+ else
883
+ default
884
+ end
885
+ end
886
+
887
+ # Destructively sets the transfer encoding of the mail object to the passed string, you
888
+ # should note though that this does nothing to the mail body, just changes the header
889
+ # value, you will need to encode or decode the body as well to match whatever you put
890
+ # in this header value.
891
+ #
892
+ # Example:
893
+ #
894
+ # mail = TMail::Mail.new
895
+ # mail.transfer_encoding #=> nil
896
+ # mail.transfer_encoding = "base64"
897
+ # mail.transfer_encoding #=> "base64"
898
+ def transfer_encoding=( str )
899
+ set_string_attr 'Content-Transfer-Encoding', str
900
+ end
901
+
902
+ alias encoding transfer_encoding
903
+ alias encoding= transfer_encoding=
904
+ alias content_transfer_encoding transfer_encoding
905
+ alias content_transfer_encoding= transfer_encoding=
906
+
907
+ # Returns the content-disposition of the mail object, returns nil or the passed
908
+ # default value if given
909
+ #
910
+ # Example:
911
+ #
912
+ # mail = TMail::Mail.load("path_to/raw_mail_with_attachment")
913
+ # mail.disposition #=> "attachment"
914
+ #
915
+ # mail = TMail::Mail.load("path_to/plain_simple_email")
916
+ # mail.disposition #=> nil
917
+ # mail.disposition(false) #=> false
918
+ def disposition( default = nil )
919
+ if h = @header['content-disposition']
920
+ h.disposition || default
921
+ else
922
+ default
923
+ end
924
+ end
925
+
926
+ alias content_disposition disposition
927
+
928
+ # Allows you to set the content-disposition of the mail object. Accepts a type
929
+ # and a hash of parameters.
930
+ #
931
+ # Example:
932
+ #
933
+ # mail.set_disposition("attachment", {:filename => "test.rb"})
934
+ # mail.disposition #=> "attachment"
935
+ # mail['content-disposition'].to_s #=> "attachment; filename=test.rb"
936
+ def set_disposition( str, params = nil )
937
+ if h = @header['content-disposition']
938
+ h.disposition = str
939
+ h.params.clear
940
+ else
941
+ store('Content-Disposition', str)
942
+ h = @header['content-disposition']
943
+ end
944
+ h.params.replace params if params
945
+ end
946
+
947
+ alias disposition= set_disposition
948
+ alias set_content_disposition set_disposition
949
+ alias content_disposition= set_disposition
950
+
951
+ # Returns the value of a parameter in an existing content-disposition header
952
+ #
953
+ # Example:
954
+ #
955
+ # mail.set_disposition("attachment", {:filename => "test.rb"})
956
+ # mail['content-disposition'].to_s #=> "attachment; filename=test.rb"
957
+ # mail.disposition_param("filename") #=> "test.rb"
958
+ # mail.disposition_param("missing_param_key") #=> nil
959
+ # mail.disposition_param("missing_param_key", false) #=> false
960
+ # mail.disposition_param("missing_param_key", "Nothing to see here") #=> "Nothing to see here"
961
+ def disposition_param( name, default = nil )
962
+ if h = @header['content-disposition']
963
+ h[name] || default
964
+ else
965
+ default
966
+ end
967
+ end
968
+
969
+ # Convert the Mail object's body into a Base64 encoded email
970
+ # returning the modified Mail object
971
+ def base64_encode!
972
+ store 'Content-Transfer-Encoding', 'Base64'
973
+ self.body = base64_encode
974
+ end
975
+
976
+ # Return the result of encoding the TMail::Mail object body
977
+ # without altering the current body
978
+ def base64_encode
979
+ Base64.folding_encode(self.body)
980
+ end
981
+
982
+ # Convert the Mail object's body into a Base64 decoded email
983
+ # returning the modified Mail object
984
+ def base64_decode!
985
+ if /base64/i === self.transfer_encoding('')
986
+ store 'Content-Transfer-Encoding', '8bit'
987
+ self.body = base64_decode
988
+ end
989
+ end
990
+
991
+ # Returns the result of decoding the TMail::Mail object body
992
+ # without altering the current body
993
+ def base64_decode
994
+ Base64.decode(self.body, @config.strict_base64decode?)
995
+ end
996
+
997
+ # Returns an array of each destination in the email message including to: cc: or bcc:
998
+ #
999
+ # Example:
1000
+ #
1001
+ # mail.to = "Mikel <mikel@lindsaar.net>"
1002
+ # mail.cc = "Trans <t@t.com>"
1003
+ # mail.bcc = "bob <bob@me.com>"
1004
+ # mail.destinations #=> ["mikel@lindsaar.net", "t@t.com", "bob@me.com"]
1005
+ def destinations( default = nil )
1006
+ ret = []
1007
+ %w( to cc bcc ).each do |nm|
1008
+ if h = @header[nm]
1009
+ h.addrs.each {|i| ret.push i.address }
1010
+ end
1011
+ end
1012
+ ret.empty? ? default : ret
1013
+ end
1014
+
1015
+ # Yields a block of destination, yielding each as a string.
1016
+ # (from the destinations example)
1017
+ # mail.each_destination { |d| puts "#{d.class}: #{d}" }
1018
+ # String: mikel@lindsaar.net
1019
+ # String: t@t.com
1020
+ # String: bob@me.com
1021
+ def each_destination( &block )
1022
+ destinations([]).each do |i|
1023
+ if Address === i
1024
+ yield i
1025
+ else
1026
+ i.each(&block)
1027
+ end
1028
+ end
1029
+ end
1030
+
1031
+ alias each_dest each_destination
1032
+
1033
+ # Returns an array of reply to addresses that the Mail object has,
1034
+ # or if the Mail message has no reply-to, returns an array of the
1035
+ # Mail objects from addresses. Else returns the default which can
1036
+ # either be passed as a parameter or defaults to nil
1037
+ #
1038
+ # Example:
1039
+ # mail.from = "Mikel <mikel@lindsaar.net>"
1040
+ # mail.reply_to = nil
1041
+ # mail.reply_addresses #=> [""]
1042
+ #
1043
+ def reply_addresses( default = nil )
1044
+ reply_to_addrs(nil) or from_addrs(nil) or default
1045
+ end
1046
+
1047
+ # Returns the "sender" field as an array -> useful to find out who to
1048
+ # send an error email to.
1049
+ def error_reply_addresses( default = nil )
1050
+ if s = sender(nil)
1051
+ [s]
1052
+ else
1053
+ from_addrs(default)
1054
+ end
1055
+ end
1056
+
1057
+ # Returns true if the Mail object is a multipart message
1058
+ def multipart?
1059
+ main_type('').downcase == 'multipart'
1060
+ end
1061
+
1062
+ # Creates a new email in reply to self. Sets the In-Reply-To and
1063
+ # References headers for you automagically.
1064
+ #
1065
+ # Example:
1066
+ # mail = TMail::Mail.load("my_email")
1067
+ # reply_email = mail.create_reply
1068
+ # reply_email.class #=> TMail::Mail
1069
+ # reply_email.references #=> ["<d3b8cf8e49f04480850c28713a1f473e@lindsaar.net>"]
1070
+ # reply_email.in_reply_to #=> ["<d3b8cf8e49f04480850c28713a1f473e@lindsaar.net>"]
1071
+ def create_reply
1072
+ setup_reply create_empty_mail()
1073
+ end
1074
+
1075
+ # Creates a new email in reply to self. Sets the In-Reply-To and
1076
+ # References headers for you automagically.
1077
+ #
1078
+ # Example:
1079
+ # mail = TMail::Mail.load("my_email")
1080
+ # forward_email = mail.create_forward
1081
+ # forward_email.class #=> TMail::Mail
1082
+ # forward_email.content_type #=> "multipart/mixed"
1083
+ # forward_email.body #=> "Attachment: (unnamed)"
1084
+ # forward_email.encoded #=> Returns the original email as a MIME attachment
1085
+ def create_forward
1086
+ setup_forward create_empty_mail()
1087
+ end
1088
+
1089
+ #:stopdoc:
1090
+ private
1091
+
1092
+ def create_empty_mail
1093
+ self.class.new(StringPort.new(''), @config)
1094
+ end
1095
+
1096
+ def setup_reply( mail )
1097
+ if tmp = reply_addresses(nil)
1098
+ mail.to_addrs = tmp
1099
+ end
1100
+
1101
+ mid = message_id(nil)
1102
+ tmp = references(nil) || []
1103
+ tmp.push mid if mid
1104
+ mail.in_reply_to = [mid] if mid
1105
+ mail.references = tmp unless tmp.empty?
1106
+ mail.subject = 'Re: ' + subject('').sub(/\A(?:\[[^\]]+\])?(?:\s*Re:)*\s*/i, '')
1107
+ mail.mime_version = '1.0'
1108
+ mail
1109
+ end
1110
+
1111
+ def setup_forward( mail )
1112
+ m = Mail.new(StringPort.new(''))
1113
+ m.body = decoded
1114
+ m.set_content_type 'message', 'rfc822'
1115
+ m.encoding = encoding('7bit')
1116
+ mail.parts.push m
1117
+ # call encoded to reparse the message
1118
+ mail.encoded
1119
+ mail
1120
+ end
1121
+
1122
+ #:startdoc:
1123
+ end # class Mail
1124
+
1125
+ end # module TMail