actionmailbox 6.1.7 → 7.0.0.alpha1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c10cf69eb1cb30d78c7bdf18cc48c348ecd841ac4660f8706e10a67f9b9a673e
4
- data.tar.gz: 1cf8e11bd664e453876341d2cf4f4259848d9af13053a6b49d92fe6840ddd0ff
3
+ metadata.gz: 81b81cb09f0bed116b38808cb3c80f6b03c4be9a017e78dfeb7fe6ffaca6f42a
4
+ data.tar.gz: a938715e24c125482f39d9c3b780b2d9203432e286b59c8978666dbf2de235cd
5
5
  SHA512:
6
- metadata.gz: ffb5b86fce10bcd4cab573ced8ab578b1c44a36bf5190594f3e7b9433e40b635417ada083d189a853abe8e5555308cd589065dd1cf21146a57064c8f5afe1518
7
- data.tar.gz: a3b936d1a2f856f19c73b4b4e56381d9bf81764cea1de1d4833f09154b4b6116b61e38796ba07fcb3f3d00398fb44878ce7d43c7b6c4f03457e156c9f0d4890d
6
+ metadata.gz: 13620fcd40b8313862556cc0feb09fccab7e7a73ff54d5c6039aa1fe71d8f4e95221dcfaeca78e9f9ede31b3be6226d23ca4cdcfd51fec0e32e5a57b6dc5ec79
7
+ data.tar.gz: fd429260a2276a8c79bae48694077938e4cac19c729df1d419d02d51db571cbea23ed1d74057a636da0cb20412706cb8fc384651591178c63f57b0261ea61a5a
data/CHANGELOG.md CHANGED
@@ -1,24 +1,4 @@
1
- ## Rails 6.1.7 (September 09, 2022) ##
2
-
3
- * No changes.
4
-
5
-
6
- ## Rails 6.1.6.1 (July 12, 2022) ##
7
-
8
- * No changes.
9
-
10
-
11
- ## Rails 6.1.6 (May 09, 2022) ##
12
-
13
- * No changes.
14
-
15
-
16
- ## Rails 6.1.5.1 (April 26, 2022) ##
17
-
18
- * No changes.
19
-
20
-
21
- ## Rails 6.1.5 (March 09, 2022) ##
1
+ ## Rails 7.0.0.alpha1 (September 15, 2021) ##
22
2
 
23
3
  * Add `attachments` to the list of permitted parameters for inbound emails conductor.
24
4
 
@@ -32,115 +12,29 @@
32
12
 
33
13
  *David Jones*, *Dana Henke*
34
14
 
15
+ * Add ability to configure ActiveStorage service
16
+ for storing email raw source.
35
17
 
36
- ## Rails 6.1.4.7 (March 08, 2022) ##
37
-
38
- * No changes.
39
-
40
-
41
- ## Rails 6.1.4.6 (February 11, 2022) ##
42
-
43
- * No changes.
44
-
45
-
46
- ## Rails 6.1.4.5 (February 11, 2022) ##
47
-
48
- * No changes.
49
-
50
-
51
- ## Rails 6.1.4.4 (December 15, 2021) ##
52
-
53
- * No changes.
54
-
55
-
56
- ## Rails 6.1.4.3 (December 14, 2021) ##
57
-
58
- * No changes.
59
-
60
-
61
- ## Rails 6.1.4.2 (December 14, 2021) ##
62
-
63
- * No changes.
64
-
65
-
66
- ## Rails 6.1.4.1 (August 19, 2021) ##
67
-
68
- * No changes.
69
-
70
-
71
- ## Rails 6.1.4 (June 24, 2021) ##
72
-
73
- * No changes.
74
-
75
-
76
- ## Rails 6.1.3.2 (May 05, 2021) ##
77
-
78
- * No changes.
79
-
80
-
81
- ## Rails 6.1.3.1 (March 26, 2021) ##
82
-
83
- * No changes.
84
-
85
-
86
- ## Rails 6.1.3 (February 17, 2021) ##
87
-
88
- * No changes.
89
-
90
-
91
- ## Rails 6.1.2.1 (February 10, 2021) ##
92
-
93
- * No changes.
94
-
95
-
96
- ## Rails 6.1.2 (February 09, 2021) ##
97
-
98
- * No changes.
99
-
100
-
101
- ## Rails 6.1.1 (January 07, 2021) ##
102
-
103
- * No changes.
104
-
105
-
106
- ## Rails 6.1.0 (December 09, 2020) ##
107
-
108
- * Change default queue name of the incineration (`:action_mailbox_incineration`) and
109
- routing (`:action_mailbox_routing`) jobs to be the job adapter's default (`:default`).
110
-
111
- *Rafael Mendonça França*
112
-
113
- * Sendgrid ingress now passes through the envelope recipient as `X-Original-To`.
114
-
115
- *Mark Haussmann*
116
-
117
- * Update Mandrill inbound email route to respond appropriately to HEAD requests for URL health checks from Mandrill.
118
-
119
- *Bill Cromie*
120
-
121
- * Add way to deliver emails via source instead of filling out a form through the conductor interface.
122
-
123
- *DHH*
124
-
125
- * Mailgun ingress now passes through the envelope recipient as `X-Original-To`.
126
-
127
- *Rikki Pitt*
128
-
129
- * Deprecate `Rails.application.credentials.action_mailbox.api_key` and `MAILGUN_INGRESS_API_KEY` in favor of `Rails.application.credentials.action_mailbox.signing_key` and `MAILGUN_INGRESS_SIGNING_KEY`.
130
-
131
- *Matthijs Vos*
18
+ ```yml
19
+ # config/storage.yml
20
+ incoming_emails:
21
+ service: Disk
22
+ root: /secure/dir/for/emails/only
23
+ ```
132
24
 
133
- * Allow easier creation of multi-part emails from the `create_inbound_email_from_mail` and `receive_inbound_email_from_mail` test helpers.
25
+ ```ruby
26
+ config.action_mailbox.storage_service = :incoming_emails
27
+ ```
134
28
 
135
- *Michael Herold*
29
+ *Yurii Rashkovskii*
136
30
 
137
- * Fix Bcc header not being included with emails from `create_inbound_email_from` test helpers.
31
+ * Add ability to incinerate an inbound message through the conductor interface.
138
32
 
139
- *jduff*
33
+ *Santiago Bartesaghi*
140
34
 
141
- * Add `ApplicationMailbox.mailbox_for` to expose mailbox routing.
35
+ * OpenSSL constants are now used for Digest computations.
142
36
 
143
- *James Dabbs*
37
+ *Dirkjan Bussink*
144
38
 
145
39
 
146
- Please check [6-0-stable](https://github.com/rails/rails/blob/6-0-stable/actionmailbox/CHANGELOG.md) for previous changes.
40
+ Please check [6-1-stable](https://github.com/rails/rails/blob/6-1-stable/actionmailbox/CHANGELOG.md) for previous changes.
data/MIT-LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2018-2022 Basecamp, LLC
3
+ Copyright (c) 2018-2021 Basecamp, LLC
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -57,7 +57,7 @@ module ActionMailbox
57
57
 
58
58
  private
59
59
  def require_valid_rfc822_message
60
- unless request.content_type == "message/rfc822"
60
+ unless request.media_type == "message/rfc822"
61
61
  head :unsupported_media_type
62
62
  end
63
63
  end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rails
4
+ # Incinerating will destroy an email that is due and has already been processed.
5
+ class Conductor::ActionMailbox::IncineratesController < Rails::Conductor::BaseController
6
+ def create
7
+ ActionMailbox::InboundEmail.find(params[:inbound_email_id]).incinerate
8
+
9
+ redirect_to main_app.rails_conductor_inbound_emails_url
10
+ end
11
+ end
12
+ end
@@ -14,12 +14,11 @@ module ActionMailbox::InboundEmail::MessageId
14
14
  # attachment called +raw_email+. Before the upload, extract the Message-ID from the +source+ and set
15
15
  # it as an attribute on the new +InboundEmail+.
16
16
  def create_and_extract_message_id!(source, **options)
17
- message_checksum = Digest::SHA1.hexdigest(source)
17
+ message_checksum = OpenSSL::Digest::SHA1.hexdigest(source)
18
18
  message_id = extract_message_id(source) || generate_missing_message_id(message_checksum)
19
19
 
20
- create! options.merge(message_id: message_id, message_checksum: message_checksum) do |inbound_email|
21
- inbound_email.raw_email.attach io: StringIO.new(source), filename: "message.eml", content_type: "message/rfc822"
22
- end
20
+ create! raw_email: create_and_upload_raw_email!(source),
21
+ message_id: message_id, message_checksum: message_checksum, **options
23
22
  rescue ActiveRecord::RecordNotUnique
24
23
  nil
25
24
  end
@@ -34,5 +33,10 @@ module ActionMailbox::InboundEmail::MessageId
34
33
  logger.warn "Message-ID couldn't be parsed or is missing. Generated a new Message-ID: #{message_id}"
35
34
  end
36
35
  end
36
+
37
+ def create_and_upload_raw_email!(source)
38
+ ActiveStorage::Blob.create_and_upload! io: StringIO.new(source), filename: "message.eml", content_type: "message/rfc822",
39
+ service_name: ActionMailbox.storage_service
40
+ end
37
41
  end
38
42
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "action_mailbox/mail_with_error_handling"
3
+ require "mail"
4
4
 
5
5
  module ActionMailbox
6
6
  # The +InboundEmail+ is an Active Record that keeps a reference to the raw email stored in Active Storage
@@ -29,7 +29,7 @@ module ActionMailbox
29
29
 
30
30
  include Incineratable, MessageId, Routable
31
31
 
32
- has_one_attached :raw_email
32
+ has_one_attached :raw_email, service: ActionMailbox.storage_service
33
33
  enum status: %i[ pending processing delivered failed bounced ]
34
34
 
35
35
  def mail
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActionMailbox
4
- class Record < ActiveRecord::Base #:nodoc:
4
+ class Record < ActiveRecord::Base # :nodoc:
5
5
  self.abstract_class = true
6
6
  end
7
7
  end
@@ -4,7 +4,7 @@
4
4
 
5
5
  <ul>
6
6
  <li><%= button_to "Route again", main_app.rails_conductor_inbound_email_reroute_path(@inbound_email), method: :post %></li>
7
- <li>Incinerate</li>
7
+ <li><%= button_to "Incinerate", main_app.rails_conductor_inbound_email_incinerate_path(@inbound_email), method: :post %></li>
8
8
  </ul>
9
9
 
10
10
  <details>
data/config/routes.rb CHANGED
@@ -21,5 +21,6 @@ Rails.application.routes.draw do
21
21
  post "inbound_emails/sources", to: "inbound_emails/sources#create", as: :rails_conductor_inbound_email_sources
22
22
 
23
23
  post ":inbound_email_id/reroute" => "reroutes#create", as: :rails_conductor_inbound_email_reroute
24
+ post ":inbound_email_id/incinerate" => "incinerates#create", as: :rails_conductor_inbound_email_incinerate
24
25
  end
25
26
  end
@@ -77,7 +77,7 @@ module ActionMailbox
77
77
  @inbound_email = inbound_email
78
78
  end
79
79
 
80
- def perform_processing #:nodoc:
80
+ def perform_processing # :nodoc:
81
81
  track_status_of_inbound_email do
82
82
  run_callbacks :process do
83
83
  process
@@ -92,7 +92,7 @@ module ActionMailbox
92
92
  # Overwrite in subclasses
93
93
  end
94
94
 
95
- def finished_processing? #:nodoc:
95
+ def finished_processing? # :nodoc:
96
96
  inbound_email.delivered? || inbound_email.bounced?
97
97
  end
98
98
 
@@ -20,6 +20,8 @@ module ActionMailbox
20
20
  config.action_mailbox.queues = ActiveSupport::InheritableOptions.new \
21
21
  incineration: :action_mailbox_incineration, routing: :action_mailbox_routing
22
22
 
23
+ config.action_mailbox.storage_service = nil
24
+
23
25
  initializer "action_mailbox.config" do
24
26
  config.after_initialize do |app|
25
27
  ActionMailbox.logger = app.config.action_mailbox.logger || Rails.logger
@@ -27,6 +29,7 @@ module ActionMailbox
27
29
  ActionMailbox.incinerate_after = app.config.action_mailbox.incinerate_after || 30.days
28
30
  ActionMailbox.queues = app.config.action_mailbox.queues || {}
29
31
  ActionMailbox.ingress = app.config.action_mailbox.ingress
32
+ ActionMailbox.storage_service = app.config.action_mailbox.storage_service
30
33
  end
31
34
  end
32
35
  end
@@ -7,10 +7,10 @@ module ActionMailbox
7
7
  end
8
8
 
9
9
  module VERSION
10
- MAJOR = 6
11
- MINOR = 1
12
- TINY = 7
13
- PRE = nil
10
+ MAJOR = 7
11
+ MINOR = 0
12
+ TINY = 0
13
+ PRE = "alpha1"
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
16
16
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "action_mailbox/mail_with_error_handling"
3
+ require "mail"
4
4
 
5
5
  # The hope is to upstream most of these basic additions to the Mail gem's Mail object. But until then, here they lay!
6
6
  Dir["#{File.expand_path(File.dirname(__FILE__))}/mail_ext/*"].each { |path| require "action_mailbox/mail_ext/#{File.basename(path)}" }
@@ -14,4 +14,5 @@ module ActionMailbox
14
14
  mattr_accessor :incinerate, default: true
15
15
  mattr_accessor :incinerate_after, default: 30.days
16
16
  mattr_accessor :queues, default: {}
17
+ mattr_accessor :storage_service
17
18
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: actionmailbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.1.7
4
+ version: 7.0.0.alpha1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
8
8
  - George Claghorn
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-09-09 00:00:00.000000000 Z
12
+ date: 2021-09-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -17,70 +17,70 @@ dependencies:
17
17
  requirements:
18
18
  - - '='
19
19
  - !ruby/object:Gem::Version
20
- version: 6.1.7
20
+ version: 7.0.0.alpha1
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - '='
26
26
  - !ruby/object:Gem::Version
27
- version: 6.1.7
27
+ version: 7.0.0.alpha1
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: activerecord
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - '='
33
33
  - !ruby/object:Gem::Version
34
- version: 6.1.7
34
+ version: 7.0.0.alpha1
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - '='
40
40
  - !ruby/object:Gem::Version
41
- version: 6.1.7
41
+ version: 7.0.0.alpha1
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: activestorage
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - '='
47
47
  - !ruby/object:Gem::Version
48
- version: 6.1.7
48
+ version: 7.0.0.alpha1
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - '='
54
54
  - !ruby/object:Gem::Version
55
- version: 6.1.7
55
+ version: 7.0.0.alpha1
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: activejob
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - '='
61
61
  - !ruby/object:Gem::Version
62
- version: 6.1.7
62
+ version: 7.0.0.alpha1
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - '='
68
68
  - !ruby/object:Gem::Version
69
- version: 6.1.7
69
+ version: 7.0.0.alpha1
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: actionpack
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - '='
75
75
  - !ruby/object:Gem::Version
76
- version: 6.1.7
76
+ version: 7.0.0.alpha1
77
77
  type: :runtime
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
81
  - - '='
82
82
  - !ruby/object:Gem::Version
83
- version: 6.1.7
83
+ version: 7.0.0.alpha1
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: mail
86
86
  requirement: !ruby/object:Gem::Requirement
@@ -114,6 +114,7 @@ files:
114
114
  - app/controllers/action_mailbox/ingresses/sendgrid/inbound_emails_controller.rb
115
115
  - app/controllers/rails/conductor/action_mailbox/inbound_emails/sources_controller.rb
116
116
  - app/controllers/rails/conductor/action_mailbox/inbound_emails_controller.rb
117
+ - app/controllers/rails/conductor/action_mailbox/incinerates_controller.rb
117
118
  - app/controllers/rails/conductor/action_mailbox/reroutes_controller.rb
118
119
  - app/controllers/rails/conductor/base_controller.rb
119
120
  - app/jobs/action_mailbox/incineration_job.rb
@@ -142,7 +143,6 @@ files:
142
143
  - lib/action_mailbox/mail_ext/addresses.rb
143
144
  - lib/action_mailbox/mail_ext/from_source.rb
144
145
  - lib/action_mailbox/mail_ext/recipients.rb
145
- - lib/action_mailbox/mail_with_error_handling.rb
146
146
  - lib/action_mailbox/relayer.rb
147
147
  - lib/action_mailbox/router.rb
148
148
  - lib/action_mailbox/router/route.rb
@@ -164,12 +164,11 @@ licenses:
164
164
  - MIT
165
165
  metadata:
166
166
  bug_tracker_uri: https://github.com/rails/rails/issues
167
- changelog_uri: https://github.com/rails/rails/blob/v6.1.7/actionmailbox/CHANGELOG.md
168
- documentation_uri: https://api.rubyonrails.org/v6.1.7/
167
+ changelog_uri: https://github.com/rails/rails/blob/v7.0.0.alpha1/actionmailbox/CHANGELOG.md
168
+ documentation_uri: https://api.rubyonrails.org/v7.0.0.alpha1/
169
169
  mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
170
- source_code_uri: https://github.com/rails/rails/tree/v6.1.7/actionmailbox
171
- rubygems_mfa_required: 'true'
172
- post_install_message:
170
+ source_code_uri: https://github.com/rails/rails/tree/v7.0.0.alpha1/actionmailbox
171
+ post_install_message:
173
172
  rdoc_options: []
174
173
  require_paths:
175
174
  - lib
@@ -177,15 +176,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
177
176
  requirements:
178
177
  - - ">="
179
178
  - !ruby/object:Gem::Version
180
- version: 2.5.0
179
+ version: 2.7.0
181
180
  required_rubygems_version: !ruby/object:Gem::Requirement
182
181
  requirements:
183
- - - ">="
182
+ - - ">"
184
183
  - !ruby/object:Gem::Version
185
- version: '0'
184
+ version: 1.3.1
186
185
  requirements: []
187
- rubygems_version: 3.3.3
188
- signing_key:
186
+ rubygems_version: 3.1.6
187
+ signing_key:
189
188
  specification_version: 4
190
189
  summary: Inbound email handling framework.
191
190
  test_files: []
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- begin
4
- require "mail"
5
- rescue LoadError => error
6
- if error.message.match?(/net\/smtp/)
7
- $stderr.puts "You don't have net-smtp installed in your application. Please add it to your Gemfile and run bundle install"
8
- raise
9
- end
10
- end