thoughtbot / griddler

Simplify receiving email in Rails (deprecated)
http://griddler.io/
MIT License
1.38k stars 199 forks source link

Encoding::CompatibilityError #304

Closed hughkolias closed 6 years ago

hughkolias commented 6 years ago

Has anyone else run into a similar issue when parsing the email body? This might be related to SNS only, but thought I would run it by here to see if anyone else has run into this issue?

Encoding::CompatibilityError: incompatible encoding regexp match (UTF-8 regexp with ASCII-8BIT string)

I realize it’s erroring in the griddler gem, but it seems to be how it’s passed from the SNS adapter.

I know @ccallebs has a fork and seems to be actively maintaining the new fork.

Here’s the body of the SNS Request:

sns message redacted.

wingrunr21 commented 6 years ago

Are you getting a stack trace? I'm guessing the exception is occurring in the Griddler email parsing logic.

Also, if you (or someone) has had good success using the forked SES adapter, feel free to submit a PR so that the link in the README can be updated

hughkolias commented 6 years ago

Thanks @wingrunr21 - it is in the email parsing logic - see the below stack trace.

The forked SES adapter is working well outside of the above. I'll make the PR now.

Stack Trace

1
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/griddler-1.5.2/lib/griddler/email_parser.rb" line 96 in split
2
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/griddler-1.5.2/lib/griddler/email_parser.rb" line 96 in block in remove_reply_portion
3
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/griddler-1.5.2/lib/griddler/email_parser.rb" line 95 in each
4
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/griddler-1.5.2/lib/griddler/email_parser.rb" line 95 in inject
5
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/griddler-1.5.2/lib/griddler/email_parser.rb" line 95 in remove_reply_portion
6
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/griddler-1.5.2/lib/griddler/email_parser.rb" line 31 in extract_reply_body
7
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/griddler-1.5.2/lib/griddler/email.rb" line 104 in extract_body
8
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/griddler-1.5.2/lib/griddler/email.rb" line 32 in initialize
9
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/griddler-1.5.2/app/controllers/griddler/emails_controller.rb" line 6 in new
10
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/griddler-1.5.2/app/controllers/griddler/emails_controller.rb" line 6 in block in create
11
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/griddler-1.5.2/app/controllers/griddler/emails_controller.rb" line 5 in each
12
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/griddler-1.5.2/app/controllers/griddler/emails_controller.rb" line 5 in create
13
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.1.0/lib/action_controller/metal/basic_implicit_render.rb" line 4 in send_action
14
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.1.0/lib/abstract_controller/base.rb" line 186 in process_action
15
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.1.0/lib/action_controller/metal/rendering.rb" line 30 in process_action
16
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.1.0/lib/abstract_controller/callbacks.rb" line 20 in block in process_action
17
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.1.0/lib/active_support/callbacks.rb" line 108 in block in run_callbacks
18
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/audited-4.4.1/lib/audited/sweeper.rb" line 14 in around
19
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.1.0/lib/active_support/callbacks.rb" line 117 in block in run_callbacks
20
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/audited-4.4.1/lib/audited/sweeper.rb" line 14 in around
21
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.1.0/lib/active_support/callbacks.rb" line 117 in block in run_callbacks
22
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.1.0/lib/active_support/callbacks.rb" line 135 in run_callbacks
23
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.1.0/lib/abstract_controller/callbacks.rb" line 19 in process_action
24
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.1.0/lib/action_controller/metal/rescue.rb" line 20 in process_action
25
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.1.0/lib/action_controller/metal/instrumentation.rb" line 32 in block in process_action
26
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.1.0/lib/active_support/notifications.rb" line 166 in block in instrument
27
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.1.0/lib/active_support/notifications/instrumenter.rb" line 21 in instrument
28
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.1.0/lib/active_support/notifications.rb" line 166 in instrument
29
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.1.0/lib/action_controller/metal/instrumentation.rb" line 30 in process_action
30
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.1.0/lib/action_controller/metal/params_wrapper.rb" line 252 in process_action
31
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/activerecord-5.1.0/lib/active_record/railties/controller_runtime.rb" line 22 in process_action
32
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.1.0/lib/abstract_controller/base.rb" line 124 in process
33
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionview-5.1.0/lib/action_view/rendering.rb" line 30 in process
34
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.1.0/lib/action_controller/metal.rb" line 189 in dispatch
35
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.1.0/lib/action_controller/metal.rb" line 253 in dispatch
36
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.1.0/lib/action_dispatch/routing/route_set.rb" line 49 in dispatch
37
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.1.0/lib/action_dispatch/routing/route_set.rb" line 31 in serve
38
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.1.0/lib/action_dispatch/journey/router.rb" line 46 in block in serve
39
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.1.0/lib/action_dispatch/journey/router.rb" line 33 in each
40
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.1.0/lib/action_dispatch/journey/router.rb" line 33 in serve
41
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.1.0/lib/action_dispatch/routing/route_set.rb" line 832 in call
42
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
43
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/apipie-rails-0.5.1/lib/apipie/static_dispatcher.rb" line 65 in call
44
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
45
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/apipie-rails-0.5.1/lib/apipie/extractor/recorder.rb" line 132 in call
46
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
47
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/rack/agent_hooks.rb" line 30 in traced_call
48
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
49
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/rack/browser_monitoring.rb" line 32 in traced_call
50
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
51
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/rack-attack-5.0.1/lib/rack/attack.rb" line 147 in call
52
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
53
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/warden-1.2.7/lib/warden/manager.rb" line 36 in block in call
54
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/warden-1.2.7/lib/warden/manager.rb" line 35 in catch
55
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/warden-1.2.7/lib/warden/manager.rb" line 35 in call
56
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
57
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/rack-2.0.3/lib/rack/etag.rb" line 25 in call
58
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
59
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/rack-2.0.3/lib/rack/conditional_get.rb" line 38 in call
60
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
61
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/rack-2.0.3/lib/rack/head.rb" line 12 in call
62
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
63
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/griddler-amazon_ses-2.0.1/lib/griddler/amazon_ses/middleware.rb" line 16 in call
64
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
65
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/rack-2.0.3/lib/rack/session/abstract/id.rb" line 232 in context
66
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/rack-2.0.3/lib/rack/session/abstract/id.rb" line 226 in call
67
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
68
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.1.0/lib/action_dispatch/middleware/cookies.rb" line 613 in call
69
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
70
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.1.0/lib/action_dispatch/middleware/callbacks.rb" line 26 in block in call
71
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.1.0/lib/active_support/callbacks.rb" line 97 in run_callbacks
72
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.1.0/lib/action_dispatch/middleware/callbacks.rb" line 24 in call
73
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
74
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/rollbar-2.16.2/lib/rollbar/middleware/rails/rollbar.rb" line 24 in block in call
75
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/rollbar-2.16.2/lib/rollbar.rb" line 146 in scoped
76
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/rollbar-2.16.2/lib/rollbar/middleware/rails/rollbar.rb" line 22 in call
77
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
78
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.1.0/lib/action_dispatch/middleware/debug_exceptions.rb" line 59 in call
79
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/rollbar-2.16.2/lib/rollbar/middleware/rails/show_exceptions.rb" line 22 in call_with_rollbar
80
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
81
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.1.0/lib/action_dispatch/middleware/show_exceptions.rb" line 31 in call
82
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
83
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/lograge-0.5.1/lib/lograge/rails_ext/rack/logger.rb" line 15 in call_app
84
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.1.0/lib/rails/rack/logger.rb" line 24 in block in call
85
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.1.0/lib/active_support/tagged_logging.rb" line 69 in block in tagged
86
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.1.0/lib/active_support/tagged_logging.rb" line 26 in tagged
87
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.1.0/lib/active_support/tagged_logging.rb" line 69 in tagged
88
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.1.0/lib/rails/rack/logger.rb" line 24 in call
89
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
90
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.1.0/lib/action_dispatch/middleware/remote_ip.rb" line 79 in call
91
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
92
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.1.0/lib/action_dispatch/middleware/request_id.rb" line 25 in call
93
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
94
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/rack-2.0.3/lib/rack/method_override.rb" line 22 in call
95
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
96
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/rack-2.0.3/lib/rack/runtime.rb" line 22 in call
97
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
98
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.1.0/lib/active_support/cache/strategy/local_cache_middleware.rb" line 27 in call
99
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
100
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.1.0/lib/action_dispatch/middleware/executor.rb" line 12 in call
101
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
102
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/rack-2.0.3/lib/rack/sendfile.rb" line 111 in call
103
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
104
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.1.0/lib/action_dispatch/middleware/ssl.rb" line 66 in call
105
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
106
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/rack-cors-0.4.1/lib/rack/cors.rb" line 81 in call
107
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
108
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.1.0/lib/rails/engine.rb" line 522 in call
109
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.1.0.333/lib/new_relic/agent/instrumentation/middleware_tracing.rb" line 92 in call
110
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/puma-3.8.2/lib/puma/configuration.rb" line 224 in call
111
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/puma-3.8.2/lib/puma/server.rb" line 600 in handle_request
112
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/puma-3.8.2/lib/puma/server.rb" line 435 in process_client
113
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/puma-3.8.2/lib/puma/server.rb" line 299 in block in run
114
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/puma-3.8.2/lib/puma/thread_pool.rb" line 120 in block in spawn_thread
115
File "/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/logging-2.2.2/lib/logging/diagnostic_context.rb" line 474 in block in create_with_logging_context
ccallebs commented 6 years ago

@hughkolias I'll be merging the changes from the fork into the upstream branch. The link shouldn't be updated, as my fork will be deprecated.

wingrunr21 commented 6 years ago

@ccallebs I'd rather update the link for the time being. Once the upstream branch is updated again I can change it back

hughkolias commented 6 years ago

I've submitted a PR for it - feel free to take whichever approach is best.

wingrunr21 commented 6 years ago

@hughkolias Long story short is that the body that's being presented to Griddler to parse is encoded in US-ASCII (eg ASCII-8BIT).

I believe the underlying issue is related to the SES adapter decoding the Base64 encoded payload. decode64 always returns a US-ASCII encoded string (since it has no idea what the original encoding of the string was). The encoding has to be forced to UTF-8 after it is decoded.

You can test this yourself:

require 'base64'

str = "foobar"
str.encoding #<Encoding:UTF-8>
b64str = Base64.encode64(str)
b64str.encoding #<Encoding:US-ASCII>
Base64.decode64(b64str).encoding #<Encoding:US-ASCII>

Also, I just want to make sure you're ok with having posted that email body publicly. There appear to be a few email addresses just in the JSON payload. Not sure what content could be in the message body itself.

hughkolias commented 6 years ago

Thanks @wingrunr21 - really appreciate that. I'll forward this to @ccallebs and see if we can modify the gem accordingly (shouldn't be to much work).

Thanks for the heads up - i've redacted those, but keeping it there for reference. I'll close out the issue and move it to the SES gem :).