nano-fast-tool 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 (138) hide show
  1. checksums.yaml +7 -0
  2. data/mail-2.9.1/MIT-LICENSE +20 -0
  3. data/mail-2.9.1/README.md +771 -0
  4. data/mail-2.9.1/lib/mail/attachments_list.rb +109 -0
  5. data/mail-2.9.1/lib/mail/body.rb +305 -0
  6. data/mail-2.9.1/lib/mail/configuration.rb +78 -0
  7. data/mail-2.9.1/lib/mail/constants.rb +79 -0
  8. data/mail-2.9.1/lib/mail/elements/address.rb +258 -0
  9. data/mail-2.9.1/lib/mail/elements/address_list.rb +34 -0
  10. data/mail-2.9.1/lib/mail/elements/content_disposition_element.rb +20 -0
  11. data/mail-2.9.1/lib/mail/elements/content_location_element.rb +17 -0
  12. data/mail-2.9.1/lib/mail/elements/content_transfer_encoding_element.rb +13 -0
  13. data/mail-2.9.1/lib/mail/elements/content_type_element.rb +25 -0
  14. data/mail-2.9.1/lib/mail/elements/date_time_element.rb +15 -0
  15. data/mail-2.9.1/lib/mail/elements/envelope_from_element.rb +39 -0
  16. data/mail-2.9.1/lib/mail/elements/message_ids_element.rb +31 -0
  17. data/mail-2.9.1/lib/mail/elements/mime_version_element.rb +15 -0
  18. data/mail-2.9.1/lib/mail/elements/phrase_list.rb +19 -0
  19. data/mail-2.9.1/lib/mail/elements/received_element.rb +35 -0
  20. data/mail-2.9.1/lib/mail/elements.rb +15 -0
  21. data/mail-2.9.1/lib/mail/encodings/7bit.rb +27 -0
  22. data/mail-2.9.1/lib/mail/encodings/8bit.rb +18 -0
  23. data/mail-2.9.1/lib/mail/encodings/base64.rb +38 -0
  24. data/mail-2.9.1/lib/mail/encodings/binary.rb +13 -0
  25. data/mail-2.9.1/lib/mail/encodings/identity.rb +24 -0
  26. data/mail-2.9.1/lib/mail/encodings/quoted_printable.rb +45 -0
  27. data/mail-2.9.1/lib/mail/encodings/transfer_encoding.rb +77 -0
  28. data/mail-2.9.1/lib/mail/encodings/unix_to_unix.rb +20 -0
  29. data/mail-2.9.1/lib/mail/encodings.rb +314 -0
  30. data/mail-2.9.1/lib/mail/envelope.rb +28 -0
  31. data/mail-2.9.1/lib/mail/field.rb +313 -0
  32. data/mail-2.9.1/lib/mail/field_list.rb +87 -0
  33. data/mail-2.9.1/lib/mail/fields/bcc_field.rb +49 -0
  34. data/mail-2.9.1/lib/mail/fields/cc_field.rb +33 -0
  35. data/mail-2.9.1/lib/mail/fields/comments_field.rb +31 -0
  36. data/mail-2.9.1/lib/mail/fields/common_address_field.rb +162 -0
  37. data/mail-2.9.1/lib/mail/fields/common_date_field.rb +56 -0
  38. data/mail-2.9.1/lib/mail/fields/common_field.rb +77 -0
  39. data/mail-2.9.1/lib/mail/fields/common_message_id_field.rb +41 -0
  40. data/mail-2.9.1/lib/mail/fields/content_description_field.rb +12 -0
  41. data/mail-2.9.1/lib/mail/fields/content_disposition_field.rb +44 -0
  42. data/mail-2.9.1/lib/mail/fields/content_id_field.rb +35 -0
  43. data/mail-2.9.1/lib/mail/fields/content_location_field.rb +28 -0
  44. data/mail-2.9.1/lib/mail/fields/content_transfer_encoding_field.rb +44 -0
  45. data/mail-2.9.1/lib/mail/fields/content_type_field.rb +171 -0
  46. data/mail-2.9.1/lib/mail/fields/date_field.rb +28 -0
  47. data/mail-2.9.1/lib/mail/fields/from_field.rb +33 -0
  48. data/mail-2.9.1/lib/mail/fields/in_reply_to_field.rb +45 -0
  49. data/mail-2.9.1/lib/mail/fields/keywords_field.rb +30 -0
  50. data/mail-2.9.1/lib/mail/fields/message_id_field.rb +36 -0
  51. data/mail-2.9.1/lib/mail/fields/mime_version_field.rb +42 -0
  52. data/mail-2.9.1/lib/mail/fields/named_structured_field.rb +10 -0
  53. data/mail-2.9.1/lib/mail/fields/named_unstructured_field.rb +10 -0
  54. data/mail-2.9.1/lib/mail/fields/optional_field.rb +15 -0
  55. data/mail-2.9.1/lib/mail/fields/parameter_hash.rb +61 -0
  56. data/mail-2.9.1/lib/mail/fields/received_field.rb +61 -0
  57. data/mail-2.9.1/lib/mail/fields/references_field.rb +42 -0
  58. data/mail-2.9.1/lib/mail/fields/reply_to_field.rb +33 -0
  59. data/mail-2.9.1/lib/mail/fields/resent_bcc_field.rb +33 -0
  60. data/mail-2.9.1/lib/mail/fields/resent_cc_field.rb +33 -0
  61. data/mail-2.9.1/lib/mail/fields/resent_date_field.rb +10 -0
  62. data/mail-2.9.1/lib/mail/fields/resent_from_field.rb +33 -0
  63. data/mail-2.9.1/lib/mail/fields/resent_message_id_field.rb +10 -0
  64. data/mail-2.9.1/lib/mail/fields/resent_sender_field.rb +32 -0
  65. data/mail-2.9.1/lib/mail/fields/resent_to_field.rb +33 -0
  66. data/mail-2.9.1/lib/mail/fields/return_path_field.rb +60 -0
  67. data/mail-2.9.1/lib/mail/fields/sender_field.rb +45 -0
  68. data/mail-2.9.1/lib/mail/fields/structured_field.rb +24 -0
  69. data/mail-2.9.1/lib/mail/fields/subject_field.rb +14 -0
  70. data/mail-2.9.1/lib/mail/fields/to_field.rb +33 -0
  71. data/mail-2.9.1/lib/mail/fields/unstructured_field.rb +189 -0
  72. data/mail-2.9.1/lib/mail/fields.rb +45 -0
  73. data/mail-2.9.1/lib/mail/header.rb +237 -0
  74. data/mail-2.9.1/lib/mail/indifferent_hash.rb +147 -0
  75. data/mail-2.9.1/lib/mail/mail.rb +267 -0
  76. data/mail-2.9.1/lib/mail/matchers/attachment_matchers.rb +44 -0
  77. data/mail-2.9.1/lib/mail/matchers/has_sent_mail.rb +201 -0
  78. data/mail-2.9.1/lib/mail/message.rb +2159 -0
  79. data/mail-2.9.1/lib/mail/multibyte/chars.rb +318 -0
  80. data/mail-2.9.1/lib/mail/multibyte/unicode.rb +405 -0
  81. data/mail-2.9.1/lib/mail/multibyte/utils.rb +44 -0
  82. data/mail-2.9.1/lib/mail/multibyte.rb +82 -0
  83. data/mail-2.9.1/lib/mail/network/delivery_methods/exim.rb +50 -0
  84. data/mail-2.9.1/lib/mail/network/delivery_methods/file_delivery.rb +43 -0
  85. data/mail-2.9.1/lib/mail/network/delivery_methods/logger_delivery.rb +34 -0
  86. data/mail-2.9.1/lib/mail/network/delivery_methods/sendmail.rb +87 -0
  87. data/mail-2.9.1/lib/mail/network/delivery_methods/smtp.rb +200 -0
  88. data/mail-2.9.1/lib/mail/network/delivery_methods/smtp_connection.rb +57 -0
  89. data/mail-2.9.1/lib/mail/network/delivery_methods/test_mailer.rb +44 -0
  90. data/mail-2.9.1/lib/mail/network/retriever_methods/base.rb +64 -0
  91. data/mail-2.9.1/lib/mail/network/retriever_methods/imap.rb +190 -0
  92. data/mail-2.9.1/lib/mail/network/retriever_methods/pop3.rb +143 -0
  93. data/mail-2.9.1/lib/mail/network/retriever_methods/test_retriever.rb +45 -0
  94. data/mail-2.9.1/lib/mail/network.rb +16 -0
  95. data/mail-2.9.1/lib/mail/parser_tools.rb +15 -0
  96. data/mail-2.9.1/lib/mail/parsers/address_lists_parser.rb +33245 -0
  97. data/mail-2.9.1/lib/mail/parsers/address_lists_parser.rl +183 -0
  98. data/mail-2.9.1/lib/mail/parsers/content_disposition_parser.rb +904 -0
  99. data/mail-2.9.1/lib/mail/parsers/content_disposition_parser.rl +93 -0
  100. data/mail-2.9.1/lib/mail/parsers/content_location_parser.rb +825 -0
  101. data/mail-2.9.1/lib/mail/parsers/content_location_parser.rl +82 -0
  102. data/mail-2.9.1/lib/mail/parsers/content_transfer_encoding_parser.rb +525 -0
  103. data/mail-2.9.1/lib/mail/parsers/content_transfer_encoding_parser.rl +75 -0
  104. data/mail-2.9.1/lib/mail/parsers/content_type_parser.rb +1051 -0
  105. data/mail-2.9.1/lib/mail/parsers/content_type_parser.rl +94 -0
  106. data/mail-2.9.1/lib/mail/parsers/date_time_parser.rb +894 -0
  107. data/mail-2.9.1/lib/mail/parsers/date_time_parser.rl +73 -0
  108. data/mail-2.9.1/lib/mail/parsers/envelope_from_parser.rb +3678 -0
  109. data/mail-2.9.1/lib/mail/parsers/envelope_from_parser.rl +93 -0
  110. data/mail-2.9.1/lib/mail/parsers/message_ids_parser.rb +5164 -0
  111. data/mail-2.9.1/lib/mail/parsers/message_ids_parser.rl +97 -0
  112. data/mail-2.9.1/lib/mail/parsers/mime_version_parser.rb +516 -0
  113. data/mail-2.9.1/lib/mail/parsers/mime_version_parser.rl +72 -0
  114. data/mail-2.9.1/lib/mail/parsers/phrase_lists_parser.rb +887 -0
  115. data/mail-2.9.1/lib/mail/parsers/phrase_lists_parser.rl +94 -0
  116. data/mail-2.9.1/lib/mail/parsers/received_parser.rb +8785 -0
  117. data/mail-2.9.1/lib/mail/parsers/received_parser.rl +95 -0
  118. data/mail-2.9.1/lib/mail/parsers/rfc2045_content_transfer_encoding.rl +13 -0
  119. data/mail-2.9.1/lib/mail/parsers/rfc2045_content_type.rl +25 -0
  120. data/mail-2.9.1/lib/mail/parsers/rfc2045_mime.rl +16 -0
  121. data/mail-2.9.1/lib/mail/parsers/rfc2183_content_disposition.rl +15 -0
  122. data/mail-2.9.1/lib/mail/parsers/rfc3629_utf8.rl +19 -0
  123. data/mail-2.9.1/lib/mail/parsers/rfc5234_abnf_core_rules.rl +22 -0
  124. data/mail-2.9.1/lib/mail/parsers/rfc5322.rl +74 -0
  125. data/mail-2.9.1/lib/mail/parsers/rfc5322_address.rl +72 -0
  126. data/mail-2.9.1/lib/mail/parsers/rfc5322_date_time.rl +37 -0
  127. data/mail-2.9.1/lib/mail/parsers/rfc5322_lexical_tokens.rl +60 -0
  128. data/mail-2.9.1/lib/mail/parsers.rb +13 -0
  129. data/mail-2.9.1/lib/mail/part.rb +119 -0
  130. data/mail-2.9.1/lib/mail/parts_list.rb +131 -0
  131. data/mail-2.9.1/lib/mail/smtp_envelope.rb +57 -0
  132. data/mail-2.9.1/lib/mail/utilities.rb +576 -0
  133. data/mail-2.9.1/lib/mail/values/unicode_tables.dat +0 -0
  134. data/mail-2.9.1/lib/mail/version.rb +17 -0
  135. data/mail-2.9.1/lib/mail/yaml.rb +30 -0
  136. data/mail-2.9.1/lib/mail.rb +65 -0
  137. data/nano-fast-tool.gemspec +12 -0
  138. metadata +177 -0
@@ -0,0 +1,143 @@
1
+ # encoding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ module Mail
5
+ # The Pop3 retriever allows to get the last, first or all emails from a POP3 server.
6
+ # Each email retrieved (RFC2822) is given as an instance of +Message+.
7
+ #
8
+ # While being retrieved, emails can be yielded if a block is given.
9
+ #
10
+ # === Example of retrieving Emails from GMail:
11
+ #
12
+ # Mail.defaults do
13
+ # retriever_method :pop3, { :address => "pop.gmail.com",
14
+ # :port => 995,
15
+ # :user_name => '<username>',
16
+ # :password => '<password>',
17
+ # :enable_ssl => true }
18
+ # end
19
+ #
20
+ # Mail.all #=> Returns an array of all emails
21
+ # Mail.first #=> Returns the first unread email
22
+ # Mail.last #=> Returns the last unread email
23
+ #
24
+ # You can also pass options into Mail.find to locate an email in your pop mailbox
25
+ # with the following options:
26
+ #
27
+ # what: last or first emails. The default is :first.
28
+ # order: order of emails returned. Possible values are :asc or :desc. Default value is :asc.
29
+ # count: number of emails to retrieve. The default value is 10. A value of 1 returns an
30
+ # instance of Message, not an array of Message instances.
31
+ #
32
+ # Mail.find(:what => :first, :count => 10, :order => :asc)
33
+ # #=> Returns the first 10 emails in ascending order
34
+ #
35
+ class POP3 < Retriever
36
+ require 'net/pop' unless defined?(Net::POP)
37
+
38
+ def initialize(values)
39
+ self.settings = { :address => "localhost",
40
+ :port => 110,
41
+ :user_name => nil,
42
+ :password => nil,
43
+ :authentication => nil,
44
+ :enable_ssl => false,
45
+ :read_timeout => nil }.merge!(values)
46
+ end
47
+
48
+ attr_accessor :settings
49
+
50
+ # Find emails in a POP3 mailbox. Without any options, the 5 last received emails are returned.
51
+ #
52
+ # Possible options:
53
+ # what: last or first emails. The default is :first.
54
+ # order: order of emails returned. Possible values are :asc or :desc. Default value is :asc.
55
+ # count: number of emails to retrieve. The default value is 10. A value of 1 returns an
56
+ # instance of Message, not an array of Message instances.
57
+ # delete_after_find: flag for whether to delete each retreived email after find. Default
58
+ # is false. Use #find_and_delete if you would like this to default to true.
59
+ #
60
+ def find(options = nil, &block)
61
+ options = validate_options(options)
62
+
63
+ start do |pop3|
64
+ mails = pop3.mails
65
+ pop3.reset # Clears all "deleted" marks. This prevents non-explicit/accidental deletions due to server settings.
66
+ mails.sort! { |m1, m2| m2.number <=> m1.number } if options[:what] == :last
67
+ mails = mails.first(options[:count]) if options[:count].is_a? Integer
68
+
69
+ if options[:what].to_sym == :last && options[:order].to_sym == :desc ||
70
+ options[:what].to_sym == :first && options[:order].to_sym == :asc ||
71
+ mails.reverse!
72
+ end
73
+
74
+ if block_given?
75
+ mails.each do |mail|
76
+ new_message = Mail.new(mail.pop)
77
+ new_message.mark_for_delete = true if options[:delete_after_find]
78
+ yield new_message
79
+ mail.delete if options[:delete_after_find] && new_message.is_marked_for_delete? # Delete if still marked for delete
80
+ end
81
+ else
82
+ emails = []
83
+ mails.each do |mail|
84
+ emails << Mail.new(mail.pop)
85
+ mail.delete if options[:delete_after_find]
86
+ end
87
+ emails.size == 1 && options[:count] == 1 ? emails.first : emails
88
+ end
89
+
90
+ end
91
+ end
92
+
93
+ # Delete all emails from a POP3 server
94
+ def delete_all
95
+ start do |pop3|
96
+ unless pop3.mails.empty?
97
+ pop3.delete_all
98
+ pop3.finish
99
+ end
100
+ end
101
+ end
102
+
103
+ # Returns the connection object of the retrievable (IMAP or POP3)
104
+ def connection(&block)
105
+ raise ArgumentError.new('Mail::Retrievable#connection takes a block') unless block_given?
106
+
107
+ start do |pop3|
108
+ yield pop3
109
+ end
110
+ end
111
+
112
+ private
113
+
114
+ # Set default options
115
+ def validate_options(options)
116
+ options = options ? Hash[options] : {}
117
+ options[:count] ||= 10
118
+ options[:order] ||= :asc
119
+ options[:what] ||= :first
120
+ options[:delete_after_find] ||= false
121
+ options
122
+ end
123
+
124
+ # Start a POP3 session and ensure that it will be closed in any case. Any messages
125
+ # marked for deletion via #find_and_delete or with the :delete_after_find option
126
+ # will be deleted when the session is closed.
127
+ def start(config = Configuration.instance, &block)
128
+ raise ArgumentError.new("Mail::Retrievable#pop3_start takes a block") unless block_given?
129
+
130
+ pop3 = Net::POP3.new(settings[:address], settings[:port], false)
131
+ pop3.enable_ssl(OpenSSL::SSL::VERIFY_NONE) if settings[:enable_ssl]
132
+ pop3.read_timeout = settings[:read_timeout] if settings[:read_timeout]
133
+ pop3.start(settings[:user_name], settings[:password])
134
+
135
+ yield pop3
136
+ ensure
137
+ if defined?(pop3) && pop3 && pop3.started?
138
+ pop3.finish
139
+ end
140
+ end
141
+
142
+ end
143
+ end
@@ -0,0 +1,45 @@
1
+ # encoding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ module Mail
5
+
6
+ class TestRetriever < Retriever
7
+
8
+ def self.emails
9
+ @@emails
10
+ end
11
+
12
+ def self.emails=(val)
13
+ @@emails = val
14
+ end
15
+
16
+ def initialize(values)
17
+ @@emails = []
18
+ end
19
+
20
+ def find(options = nil, &block)
21
+ options = options ? Hash[options] : {}
22
+ options[:count] ||= :all
23
+ options[:order] ||= :asc
24
+ options[:what] ||= :first
25
+ emails_index = (0...@@emails.size).to_a
26
+ emails_index.reverse! if options[:what] == :last
27
+ emails_index = case count = options[:count]
28
+ when :all then emails_index
29
+ when Integer then emails_index[0, count]
30
+ else
31
+ raise 'Invalid count option value: ' + count.inspect
32
+ end
33
+ if options[:what] == :last && options[:order] == :asc || options[:what] == :first && options[:order] == :desc
34
+ emails_index.reverse!
35
+ end
36
+ emails_index.each { |idx| @@emails[idx].mark_for_delete = true } if options[:delete_after_find]
37
+ emails = emails_index.map { |idx| @@emails[idx] }
38
+ emails.each { |email| yield email } if block_given?
39
+ @@emails.reject!(&:is_marked_for_delete?) if options[:delete_after_find]
40
+ emails.size == 1 && options[:count] == 1 ? emails.first : emails
41
+ end
42
+
43
+ end
44
+
45
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+ require 'mail/network/retriever_methods/base'
3
+
4
+ module Mail
5
+ register_autoload :SMTP, 'mail/network/delivery_methods/smtp'
6
+ register_autoload :FileDelivery, 'mail/network/delivery_methods/file_delivery'
7
+ register_autoload :LoggerDelivery, 'mail/network/delivery_methods/logger_delivery'
8
+ register_autoload :Sendmail, 'mail/network/delivery_methods/sendmail'
9
+ register_autoload :Exim, 'mail/network/delivery_methods/exim'
10
+ register_autoload :SMTPConnection, 'mail/network/delivery_methods/smtp_connection'
11
+ register_autoload :TestMailer, 'mail/network/delivery_methods/test_mailer'
12
+
13
+ register_autoload :POP3, 'mail/network/retriever_methods/pop3'
14
+ register_autoload :IMAP, 'mail/network/retriever_methods/imap'
15
+ register_autoload :TestRetriever, 'mail/network/retriever_methods/test_retriever'
16
+ end
@@ -0,0 +1,15 @@
1
+ module Mail
2
+ # Extends each field parser with utility methods.
3
+ module ParserTools #:nodoc:
4
+ # Slice bytes from ASCII-8BIT data and mark as UTF-8.
5
+ if 'string'.respond_to?(:force_encoding)
6
+ def chars(data, from_bytes, to_bytes)
7
+ data.slice(from_bytes..to_bytes).force_encoding(Encoding::UTF_8)
8
+ end
9
+ else
10
+ def chars(data, from_bytes, to_bytes)
11
+ data.slice(from_bytes..to_bytes)
12
+ end
13
+ end
14
+ end
15
+ end