truemail 1.8.0 → 2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ce37fd460cb5da28f5880be61ac6abb5ca5e8d0fe1010738e45a02a70417fa31
4
- data.tar.gz: 3f66bb5169a012e7bd77af80c40c51c021332cb86be4f2ef6f1450611001cebf
3
+ metadata.gz: df5c336052c203a93e507bc6ab7780dce97ee2fce675802970c3833ebb9dc67d
4
+ data.tar.gz: fe656f4cfdbf3b5ac2553b564949d571b9acfb3b4966b4b1e92e54e4dc944424
5
5
  SHA512:
6
- metadata.gz: 4902f4e7d2c68cc8714c536ae1844904b99c7609a2b36d057902e6a838d2e2e33bb301f99b7cb067e108bb4bae845ec2e9dfbb9be529db8d53c9bf50a31dfdf9
7
- data.tar.gz: f049315d919448d56d8082da28df31d1bc7ad6e191fc5b30629b38011ff4450f870fb7597a6bc4645007fe7bcbc4a7fa3b0855ee408f4115466e9a3496c926c8
6
+ metadata.gz: 00f45a13fb66496f3cac30f4be31c9894aa1f825e7038605cafadbbb790323774a448cf962dad39331c59f883edc2660028e44ea5b0a69ecfcde2ca961d5eb14
7
+ data.tar.gz: 20a6a83a217a2f727060db14ba98eb68ba232394f95a2cc2c1eb8f51ca1a67ee9600035959f4c2aaf30ac71edecea0dd16f815652d35526a3e125ca1e940bbe9
@@ -3,7 +3,7 @@ defaults: &defaults
3
3
  docker:
4
4
  - image: circleci/ruby:2.5.0-node
5
5
  environment:
6
- CC_TEST_REPORTER_ID: a98d23d6d916932ae11dbe5df36dee070173cbe376b68758901dcc289e098979
6
+ CC_TEST_REPORTER_ID: 693272a1328521f6f7c09d7ffd419b21c00410da26e98e94c687fdd38b26e2cb
7
7
 
8
8
  references:
9
9
  restore_bundle_cache: &restore_bundle_cache
@@ -7,7 +7,7 @@ checks:
7
7
  plugins:
8
8
  rubocop:
9
9
  enabled: true
10
- channel: rubocop-0-78
10
+ channel: rubocop-0-93
11
11
 
12
12
  reek:
13
13
  enabled: true
@@ -3,9 +3,9 @@
3
3
  ### New Issue Checklist
4
4
 
5
5
  - [ ] I have updated truemail to the latest version
6
- - [ ] I have read the [Contribution Guidelines](https://github.com/rubygarage/truemail/blob/master/CONTRIBUTING.md)
7
- - [ ] I have read the [documentation](https://github.com/rubygarage/truemail/blob/master/README.md)
8
- - [ ] I have searched for [existing GitHub issues](https://github.com/rubygarage/truemail/issues)
6
+ - [ ] I have read the [Contribution Guidelines](https://github.com/truemail-rb/truemail/blob/master/CONTRIBUTING.md)
7
+ - [ ] I have read the [documentation](https://truemail-rb.org/truemail-gem)
8
+ - [ ] I have searched for [existing GitHub issues](https://github.com/truemail-rb/truemail/issues)
9
9
 
10
10
  ### Issue Description
11
11
  <!-- Please include what's happening, expected behavior, and any relevant code samples -->
@@ -40,7 +40,7 @@
40
40
  - [ ] My code follows the code style of this project
41
41
  - [ ] My change requires a change to the documentation
42
42
  - [ ] I have updated the documentation accordingly
43
- - [ ] I have read the [**CONTRIBUTING** document](https://github.com/rubygarage/truemail/blob/master/CONTRIBUTING.md)
43
+ - [ ] I have read the [**CONTRIBUTING** document](https://github.com/truemail-rb/truemail/blob/master/CONTRIBUTING.md)
44
44
  - [ ] I have added tests to cover my changes
45
45
  - [ ] I have run `bundle exec rspec` from the root directory to see all new and existing tests pass
46
46
  - [ ] I have run `rubocop` and `reek` to ensure the code style is valid
data/.reek.yml CHANGED
@@ -39,6 +39,8 @@ detectors:
39
39
  - Truemail::Validate::Mx#a_record
40
40
  - Truemail::Audit::Base#verifier_domain
41
41
  - Truemail::Configuration#domain_matcher
42
+ - Truemail::Configuration#logger_options
43
+ - Truemail::Log::Serializer::Base#errors
42
44
 
43
45
  ControlParameter:
44
46
  exclude:
@@ -55,6 +57,8 @@ detectors:
55
57
  - Truemail::ConfigurationHelper#create_configuration
56
58
  - Truemail::Log::Serializer::Base#smtp_debug
57
59
  - Truemail::Log::Serializer::Text#data_composer
60
+ - Truemail::Log::Serializer::ValidatorBase#smtp_debug
61
+ - Truemail::Log::Serializer::ValidatorText#data_composer
58
62
 
59
63
  NilCheck:
60
64
  exclude:
@@ -40,6 +40,84 @@ Style/EmptyCaseCondition:
40
40
  Style/RescueStandardError:
41
41
  Enabled: false
42
42
 
43
+ Style/AccessorGrouping:
44
+ Enabled: true
45
+
46
+ Style/ArrayCoercion:
47
+ Enabled: true
48
+
49
+ Style/BisectedAttrAccessor:
50
+ Enabled: true
51
+
52
+ Style/CaseLikeIf:
53
+ Enabled: true
54
+
55
+ Style/ExplicitBlockArgument:
56
+ Enabled: true
57
+
58
+ Style/ExponentialNotation:
59
+ Enabled: true
60
+
61
+ Style/GlobalStdStream:
62
+ Enabled: true
63
+
64
+ Style/HashAsLastArrayItem:
65
+ Enabled: true
66
+
67
+ Style/HashEachMethods:
68
+ Enabled: true
69
+
70
+ Style/HashLikeCase:
71
+ Enabled: true
72
+
73
+ Style/HashTransformKeys:
74
+ Enabled: true
75
+
76
+ Style/HashTransformValues:
77
+ Enabled: true
78
+
79
+ Style/OptionalBooleanParameter:
80
+ Enabled: true
81
+
82
+ Style/RedundantAssignment:
83
+ Enabled: true
84
+
85
+ Style/RedundantFetchBlock:
86
+ Enabled: true
87
+
88
+ Style/RedundantFileExtensionInRequire:
89
+ Enabled: true
90
+
91
+ Style/RedundantRegexpCharacterClass:
92
+ Enabled: true
93
+
94
+ Style/RedundantRegexpEscape:
95
+ Enabled: true
96
+
97
+ Style/SingleArgumentDig:
98
+ Enabled: true
99
+
100
+ Style/SlicingWithRange:
101
+ Enabled: true
102
+
103
+ Style/StringConcatenation:
104
+ Enabled: true
105
+
106
+ Style/CombinableLoops:
107
+ Enabled: true
108
+
109
+ Style/KeywordParametersOrder:
110
+ Enabled: true
111
+
112
+ Style/RedundantSelfAssignment:
113
+ Enabled: true
114
+
115
+ Style/SoleNestedConditional:
116
+ Enabled: true
117
+
118
+ Style/ClassEqualityComparison:
119
+ Enabled: true
120
+
43
121
  Layout/LineLength:
44
122
  Max: 140
45
123
 
@@ -50,15 +128,9 @@ Layout/ClassStructure:
50
128
  - include
51
129
  - prepend
52
130
  - extend
53
- associations:
54
- - has_one
55
- - has_many
56
- - belongs_to
57
- - has_and_belongs_to_many
58
131
  ExpectedOrder:
59
132
  - module_inclusion
60
133
  - constants
61
- - associations
62
134
  - public_class_methods
63
135
  - initializer
64
136
  - public_methods
@@ -68,9 +140,114 @@ Layout/ClassStructure:
68
140
  Layout/EmptyLineAfterGuardClause:
69
141
  Enabled: false
70
142
 
143
+ Layout/SpaceAroundMethodCallOperator:
144
+ Enabled: true
145
+
146
+ Layout/EmptyLinesAroundAttributeAccessor:
147
+ Enabled: true
148
+
149
+ Layout/BeginEndAlignment:
150
+ Enabled: true
151
+
71
152
  Lint/NonDeterministicRequireOrder:
72
153
  Enabled: false
73
154
 
155
+ Lint/BinaryOperatorWithIdenticalOperands:
156
+ Enabled: true
157
+
158
+ Lint/DeprecatedOpenSSLConstant:
159
+ Enabled: true
160
+
161
+ Lint/DuplicateElsifCondition:
162
+ Enabled: true
163
+
164
+ Lint/DuplicateRescueException:
165
+ Enabled: true
166
+
167
+ Lint/EmptyConditionalBody:
168
+ Enabled: true
169
+
170
+ Lint/FloatComparison:
171
+ Enabled: true
172
+
173
+ Lint/MissingSuper:
174
+ Enabled: false
175
+
176
+ Lint/MixedRegexpCaptureTypes:
177
+ Enabled: true
178
+
179
+ Lint/OutOfRangeRegexpRef:
180
+ Enabled: true
181
+
182
+ Lint/RaiseException:
183
+ Enabled: true
184
+
185
+ Lint/SelfAssignment:
186
+ Enabled: true
187
+
188
+ Lint/StructNewOverride:
189
+ Enabled: true
190
+
191
+ Lint/TopLevelReturnWithArgument:
192
+ Enabled: true
193
+
194
+ Lint/UnreachableLoop:
195
+ Enabled: true
196
+
197
+ Lint/ConstantDefinitionInBlock:
198
+ Enabled: true
199
+
200
+ Lint/DuplicateRequire:
201
+ Enabled: true
202
+
203
+ Lint/EmptyFile:
204
+ Enabled: true
205
+
206
+ Lint/IdentityComparison:
207
+ Enabled: true
208
+
209
+ Lint/TrailingCommaInAttributeDeclaration:
210
+ Enabled: true
211
+
212
+ Lint/UselessMethodDefinition:
213
+ Enabled: true
214
+
215
+ Lint/UselessTimes:
216
+ Enabled: true
217
+
218
+ Lint/HashCompareByIdentity:
219
+ Enabled: true
220
+
221
+ Lint/RedundantSafeNavigation:
222
+ Enabled: true
223
+
224
+ Performance/AncestorsInclude:
225
+ Enabled: true
226
+
227
+ Performance/BigDecimalWithNumericArgument:
228
+ Enabled: true
229
+
230
+ Performance/RedundantSortBlock:
231
+ Enabled: true
232
+
233
+ Performance/RedundantStringChars:
234
+ Enabled: true
235
+
236
+ Performance/ReverseFirst:
237
+ Enabled: true
238
+
239
+ Performance/SortReverse:
240
+ Enabled: true
241
+
242
+ Performance/Squeeze:
243
+ Enabled: true
244
+
245
+ Performance/StringInclude:
246
+ Enabled: true
247
+
248
+ Performance/Sum:
249
+ Enabled: true
250
+
74
251
  RSpec/ExampleLength:
75
252
  Enabled: false
76
253
 
@@ -94,3 +271,6 @@ RSpec/MessageSpies:
94
271
 
95
272
  RSpec/MultipleDescribes:
96
273
  Enabled: false
274
+
275
+ RSpec/MultipleMemoizedHelpers:
276
+ Enabled: false
@@ -2,9 +2,98 @@
2
2
 
3
3
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
4
4
 
5
+ ## [2.0.1] - 2020.10.20
6
+
7
+ ### Changed
8
+
9
+ - gem development dependencies
10
+ - gem documentation
11
+
12
+ ## [2.0.0] - 2020.10.19
13
+
14
+ ### Fixed
15
+
16
+ SMTP connection errors: invalid `HELO` hostname (`localhost`), duplicate `HELO` (`verifier domain`).
17
+
18
+ ### Changed
19
+
20
+ - Updated `Truemail::Validate::Smtp::Request#run`
21
+ - Updated `Truemail::Validate::Smtp::Request#session_data`
22
+ - Updated `Truemail::Validate::Smtp::Response`
23
+
24
+ Now `helo` is a `Boolean` instead of `Net::SMTP::Response` instance. It was changed because `helo` is sending during SMTP-session initializing (`Net::SMTP.new.start`), and `helo` is always `true` if session up is okay. Also `hello` response won't logged as error if it happens. Example of `Truemail::Validate::Smtp::Response` instance from 2.x version.
25
+
26
+ ```ruby
27
+ #<struct Truemail::Validate::Smtp::Response:0x00007fa74704cd10
28
+ port_opened=true,
29
+ connection=true,
30
+ helo=true, # Returns Boolean instead of Net::SMTP::Response instance
31
+ mailfrom=false,
32
+ rcptto=nil,
33
+ errors={:mailfrom=>"server response timeout"}>
34
+ ```
35
+
36
+ ## [1.9.2] - 2020.10.02
37
+
38
+ ### Added
39
+
40
+ - `Truemail::TypeError`
41
+ - error handling for invalid types as input email
42
+
43
+ ### Changed
44
+
45
+ - Updated `Truemail.validate`
46
+ - Updated `Truemail.valid?`
47
+
48
+ ## [1.9.1] - 2020.09.21
49
+
50
+ ### Changed
51
+
52
+ Migrated to updated Ruby 2.7.x syntax.
53
+
54
+ - Updated `Truemail::Configuration#logger=`
55
+
56
+ ## [1.9.0] - 2020.09.01
57
+
58
+ ### Added
59
+
60
+ - Ability to use `Truemail::Auditor` instance represented as json directly
61
+ - `Truemail::Log::Serializer::AuditorJson`
62
+
63
+ ### Changed
64
+
65
+ - `Truemail::Auditor`, `Truemail::Validator`
66
+ - serializers namespaces
67
+ - gem development dependencies
68
+ - gem documentation
69
+
70
+ ```ruby
71
+ Truemail.host_audit.as_json
72
+
73
+ =>
74
+ # Serialized Truemail::Auditor instance
75
+ {
76
+ "date": "2020-08-31 22:33:43 +0300",
77
+ "current_host_ip": "127.0.0.1",
78
+ "warnings": {
79
+ "dns": "A-record of verifier domain not refers to current host ip address", "ptr": "PTR-record does not reference to current verifier domain"
80
+ },
81
+ "configuration": {
82
+ "validation_type_by_domain": null,
83
+ "whitelist_validation": false,
84
+ "whitelisted_domains": null,
85
+ "blacklisted_domains": null,
86
+ "not_rfc_mx_lookup_flow": false,
87
+ "smtp_safe_check": false,
88
+ "email_pattern": "default gem value",
89
+ "smtp_error_body_pattern": "default gem value"
90
+ }
91
+ }
92
+ ```
93
+
5
94
  ## [1.8.0] - 2020.06.21
6
95
 
7
- ## Added
96
+ ### Added
8
97
 
9
98
  Separated audit features for verifier host.
10
99
 
@@ -51,7 +140,7 @@ Truemail.host_audit
51
140
 
52
141
  ## [1.7.1] - 2020.05.10
53
142
 
54
- ## Added
143
+ ### Added
55
144
 
56
145
  - Ability to show `not_rfc_mx_lookup_flow` attribute in serialized validation result
57
146
 
@@ -99,7 +188,7 @@ Truemail.validate('nonexistent_email@bestweb.com.ua').as_json
99
188
 
100
189
  ## [1.7.0] - 2020.05.09
101
190
 
102
- ## Added
191
+ ### Added
103
192
 
104
193
  - Ability to use not RFC MX lookup flow (MX and Null MX records will be checked on the DNS validation layer only)
105
194
 
@@ -139,7 +228,7 @@ end
139
228
 
140
229
  ### Added
141
230
 
142
- - Possibility to use `Truemail::Validator` instance represented as json directly
231
+ - Ability to use `Truemail::Validator` instance represented as json directly
143
232
 
144
233
  ### Changed
145
234
 
@@ -297,6 +386,7 @@ Truemail.validate('email@white-domain.com', with: :regex)
297
386
  smtp_debug=nil>,
298
387
  @validation_type=:regex>
299
388
  ```
389
+
300
390
  **Email hasn't whitelisted domain**
301
391
 
302
392
  ```ruby
@@ -322,9 +412,9 @@ Truemail.validate('email@domain.com', with: :regex)
322
412
 
323
413
  ### Added
324
414
 
325
- - Configurable default validation type, [issue details](https://github.com/rubygarage/truemail/issues/48)
415
+ - Configurable default validation type, [issue details](https://github.com/truemail-rb/truemail/issues/48)
326
416
 
327
- You can predefine default validation type for ```Truemail.validate('email@email.com')``` call without with-parameter. Available validation types: ```:regex```, ```:mx```, ```:smtp```. By default validation type still remains ```:smtp```
417
+ You can predefine default validation type for `Truemail.validate('email@email.com')` call without with-parameter. Available validation types: `:regex`, `:mx`, `:smtp`. By default validation type still remains `:smtp`
328
418
 
329
419
  ```ruby
330
420
  Truemail.configure do |config|
@@ -379,7 +469,7 @@ Truemail.validate('email@black-domain.com')
379
469
 
380
470
  ### Added
381
471
 
382
- - Feature domain whitelist blacklist. Other validations will not processed even if it was defined in ```validation_type_for```.
472
+ - Feature domain whitelist blacklist. Other validations will not processed even if it was defined in `validation_type_for`.
383
473
 
384
474
  ```ruby
385
475
  Truemail.configure do |config|
@@ -402,7 +492,7 @@ Truemail.configuration.blacklisted_domains = ['somedomain1.com', 'somedomain2.co
402
492
 
403
493
  ### Removed
404
494
 
405
- - ```:skip``` validation type for ```validation_type_for```
495
+ - `:skip` validation type for `validation_type_for`
406
496
 
407
497
  ### Fixed
408
498
 
@@ -417,7 +507,7 @@ Truemail.configuration.blacklisted_domains = ['somedomain1.com', 'somedomain2.co
417
507
 
418
508
  ### Added
419
509
 
420
- - skip validation by domain for validation_type_for configuration option:
510
+ - skip validation by domain for `validation_type_for` configuration option:
421
511
 
422
512
  ```ruby
423
513
  Truemail.configure do |config|
@@ -440,7 +530,7 @@ Truemail.configuration.validation_type_for = { 'somedomain.com' => :skip }
440
530
 
441
531
  ### Added
442
532
 
443
- - SMTP error body configurable option, [issue details](https://github.com/rubygarage/truemail/issues/19)
533
+ - SMTP error body configurable option, [issue details](https://github.com/truemail-rb/truemail/issues/19)
444
534
 
445
535
  ### Changed
446
536
 
@@ -457,11 +547,11 @@ Truemail.configuration.validation_type_for = { 'somedomain.com' => :skip }
457
547
 
458
548
  ### Added
459
549
 
460
- - Reverse trace, [issue details](https://github.com/rubygarage/truemail/issues/18)
550
+ - Reverse trace, [issue details](https://github.com/truemail-rb/truemail/issues/18)
461
551
 
462
552
  ### Fixed
463
553
 
464
- - Behaviour of current host address resolver, [issue details](https://github.com/rubygarage/truemail/issues/18)
554
+ - Behaviour of current host address resolver, [issue details](https://github.com/truemail-rb/truemail/issues/18)
465
555
 
466
556
  ### Changed
467
557
 
@@ -472,7 +562,7 @@ Truemail.configuration.validation_type_for = { 'somedomain.com' => :skip }
472
562
 
473
563
  ### Added
474
564
 
475
- - PTR record audit, [issue details](https://github.com/rubygarage/truemail/issues/18)
565
+ - PTR record audit, [issue details](https://github.com/truemail-rb/truemail/issues/18)
476
566
 
477
567
  ### Changed
478
568
 
@@ -483,12 +573,12 @@ Truemail.configuration.validation_type_for = { 'somedomain.com' => :skip }
483
573
 
484
574
  ### Added
485
575
 
486
- - MX gem logic with [RFC 7505](https://tools.ietf.org/html/rfc7505), null MX record supporting, [issue details](https://github.com/rubygarage/truemail/issues/27)
576
+ - MX gem logic with [RFC 7505](https://tools.ietf.org/html/rfc7505), null MX record supporting, [issue details](https://github.com/truemail-rb/truemail/issues/27)
487
577
  - [Contributing guideline](CONTRIBUTING.md)
488
578
 
489
579
  ### Fixed
490
580
 
491
- - Multihomed MX records supporting, [issue details](https://github.com/rubygarage/truemail/issues/28)
581
+ - Multihomed MX records supporting, [issue details](https://github.com/truemail-rb/truemail/issues/28)
492
582
 
493
583
  ### Changed
494
584
 
@@ -499,11 +589,11 @@ Truemail.configuration.validation_type_for = { 'somedomain.com' => :skip }
499
589
 
500
590
  ### Added
501
591
 
502
- - Retries for ```Truemail::Validate::Smtp``` for cases when one mx server
592
+ - Retries for `Truemail::Validate::Smtp` for cases when one mx server
503
593
 
504
594
  ### Changed
505
595
 
506
- - ```Truemail::Configuration``` class, please use ```.connection_attempts``` instead ```.retry_count```
596
+ - `Truemail::Configuration` class, please use `.connection_attempts` instead `.retry_count`
507
597
  - `Truemail::VERSION`
508
598
  - gem documentation
509
599
 
@@ -511,12 +601,12 @@ Truemail.configuration.validation_type_for = { 'somedomain.com' => :skip }
511
601
 
512
602
  ### Added
513
603
 
514
- - Checking A record presence if ```MX``` and ```CNAME``` records not exist, [issue details](https://github.com/rubygarage/truemail/issues/10)
515
- - Handling of ```CNAME``` records, [issue details](https://github.com/rubygarage/truemail/issues/11)
516
- - Checking A record if ```MX``` and ```CNAME``` records not found, [issue details](https://github.com/rubygarage/truemail/issues/12)
517
- - Supporting of multihomed MX records, conversion host names to ips, [issue details](https://github.com/rubygarage/truemail/issues/17)
518
- - Timeout configuration for DNS resolver, [issue details](https://github.com/rubygarage/truemail/issues/13)
519
- - ```.valid?``` helper
604
+ - Checking A record presence if `MX` and `CNAME` records not exist, [issue details](https://github.com/truemail-rb/truemail/issues/10)
605
+ - Handling of `CNAME` records, [issue details](https://github.com/truemail-rb/truemail/issues/11)
606
+ - Checking A record if `MX` and `CNAME` records not found, [issue details](https://github.com/truemail-rb/truemail/issues/12)
607
+ - Supporting of multihomed MX records, conversion host names to ips, [issue details](https://github.com/truemail-rb/truemail/issues/17)
608
+ - Timeout configuration for DNS resolver, [issue details](https://github.com/truemail-rb/truemail/issues/13)
609
+ - `.valid?` helper
520
610
 
521
611
  ### Changed
522
612
 
@@ -527,16 +617,16 @@ Truemail.configuration.validation_type_for = { 'somedomain.com' => :skip }
527
617
 
528
618
  ### Added
529
619
 
530
- - Independent domain name extractor to ```Truemail::Validate::Mx#run```
620
+ - Independent domain name extractor to `Truemail::Validate::Mx#run`
531
621
 
532
622
  ### Fixed
533
623
 
534
- - Default ```REGEX_EMAIL_PATTERN```, [issue details](https://github.com/rubygarage/truemail/issues/7)
624
+ - Default `REGEX_EMAIL_PATTERN`, [issue details](https://github.com/truemail-rb/truemail/issues/7)
535
625
  * local part of address can't start with a dot or special symbol
536
626
  * local part of address can include ```+``` symbol
537
- - Default ```REGEX_DOMAIN_PATTERN```, [issue details](https://github.com/rubygarage/truemail/issues/8)
627
+ - Default `REGEX_DOMAIN_PATTERN`, [issue details](https://github.com/truemail-rb/truemail/issues/8)
538
628
  * TLD size increased up to 63 characters
539
- - Case sensitive domain names, [issue details](https://github.com/rubygarage/truemail/issues/9)
629
+ - Case sensitive domain names, [issue details](https://github.com/truemail-rb/truemail/issues/9)
540
630
 
541
631
  ### Changed
542
632
 
@@ -583,10 +673,7 @@ Truemail.validate('email@example.com')
583
673
  #<struct Truemail::Validate::Smtp::Response
584
674
  port_opened=true,
585
675
  connection=false,
586
- helo=
587
- #<Net::SMTP::Response:0x0000000002c934c8
588
- @status="250",
589
- @string="250 mx1.example.com\n">,
676
+ helo=true,
590
677
  mailfrom=false,
591
678
  rcptto=nil,
592
679
  errors={:mailfrom=>"554 5.7.1 Client host blocked\n", :connection=>"server dropped connection after response"}>>,]>,