truemail 2.1.0 → 2.2.0
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 +4 -4
- data/.reek.yml +1 -0
- data/CHANGELOG.md +27 -1
- data/Gemfile.lock +1 -1
- data/README.md +95 -1
- data/lib/truemail/configuration.rb +2 -1
- data/lib/truemail/validate/smtp.rb +15 -5
- data/lib/truemail/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ccc592c306e3cb61ae0b64e88204a5d464d614abb842bc6538112a19acca812a
|
4
|
+
data.tar.gz: f61ebb1883ff711a1816c3f6523c1ab2f4ffa11b13782011d4d42f9204a4e298
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 640d6769aee1f4fde2d525253d3096a99866ecd190ad1e3f5ddb77c4105908f97a7cd3468fb65d97363291ec3931cc4802f25673e696ffee6d028000f8d5edff
|
7
|
+
data.tar.gz: 21e63e9a6b6e17b830569a64ddb563264e8ff1a5a4ab6ac22da21169bd331474ae2e467765a196d36b5bafd5ef40867cf4baf74b3861cab967c24bfd457d4a73
|
data/.reek.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -2,9 +2,35 @@
|
|
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.2.0] - 2020.12.01
|
6
|
+
|
7
|
+
Ability to use fail fast behaviour for SMTP validation layer. When `smtp_fail_fast = true` it means that `truemail` ends smtp validation session after first attempt on the first mx server in any fail cases (network connection/timeout error, smtp validation error). This feature helps to reduce total time of SMTP validation session up to 1 second.
|
8
|
+
|
9
|
+
### Added
|
10
|
+
|
11
|
+
- Added `Truemail::Configuration#smtp_fail_fast`
|
12
|
+
- Added `Truemail::Validate::Smtp#smtp_fail_fast?`
|
13
|
+
- Added `Truemail::Validate::Smtp#filtered_mail_servers_by_fail_fast_scenario`
|
14
|
+
|
15
|
+
### Changed
|
16
|
+
|
17
|
+
- Updated `Truemail::Validate::Smtp#attempts`
|
18
|
+
- Updated `Truemail::Validate::Smtp#establish_smtp_connection`
|
19
|
+
- Updated gem documentation
|
20
|
+
|
21
|
+
It's a configurable and not required option:
|
22
|
+
|
23
|
+
```ruby
|
24
|
+
Truemail.configure do |config|
|
25
|
+
config.smtp_fail_fast = true # by default it's equal to false
|
26
|
+
end
|
27
|
+
```
|
28
|
+
|
29
|
+
Thanks to [@wikiti](https://github.com/wikiti) for timeout reports.
|
30
|
+
|
5
31
|
## [2.1.0] - 2020.11.21
|
6
32
|
|
7
|
-
Collecting only unique ip-addresses for target mail servers. This update
|
33
|
+
Collecting only unique ip-addresses for target mail servers. This update reduces email validation time for case when remote server have closed connection via avoiding connection attempt to server with the same ip address.
|
8
34
|
|
9
35
|
### Changed
|
10
36
|
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -40,6 +40,7 @@ Configurable framework agnostic plain Ruby email validator. Verify email via Reg
|
|
40
40
|
- [RFC MX lookup flow](#rfc-mx-lookup-flow)
|
41
41
|
- [Not RFC MX lookup flow](#not-rfc-mx-lookup-flow)
|
42
42
|
- [SMTP validation](#smtp-validation)
|
43
|
+
- [SMTP fail fast enabled](#smtp-fail-fast-enabled)
|
43
44
|
- [SMTP safe check disabled](#smtp-safe-check-disabled)
|
44
45
|
- [SMTP safe check enabled](#smtp-safe-check-enabled)
|
45
46
|
- [Host audit features](#host-audit-features)
|
@@ -82,10 +83,12 @@ Also Truemail gem allows performing an audit of the host in which runs.
|
|
82
83
|
- Minimal runtime dependencies
|
83
84
|
- Supporting of internationalized emails ([EAI](https://en.wikipedia.org/wiki/Email_address#Internationalization))
|
84
85
|
- Whitelist/blacklist validation layers
|
86
|
+
- Ability to configure different MX/SMTP validation flows
|
85
87
|
- Simple SMTP debugger
|
86
88
|
- Event logger
|
87
89
|
- Host auditor tools (helps to detect common host problems interfering to proper email verification)
|
88
90
|
- JSON serializers
|
91
|
+
- Ability to use the library as independent stateless microservice ([Truemail Server](https://truemail-rb.org/truemail-rack))
|
89
92
|
|
90
93
|
## Requirements
|
91
94
|
|
@@ -129,6 +132,8 @@ You can use global gem configuration or custom independent configuration. Availa
|
|
129
132
|
- whitelisted domains
|
130
133
|
- whitelist validation
|
131
134
|
- blacklisted domains
|
135
|
+
- RFC MX lookup flow
|
136
|
+
- SMTP fail fast
|
132
137
|
- SMTP safe check
|
133
138
|
- event logger
|
134
139
|
- JSON serializer
|
@@ -201,6 +206,13 @@ Truemail.configure do |config|
|
|
201
206
|
# By default this option is disabled.
|
202
207
|
config.not_rfc_mx_lookup_flow = true
|
203
208
|
|
209
|
+
# Optional parameter. This option will provide to use smtp fail fast behaviour. When
|
210
|
+
# smtp_fail_fast = true it means that truemail ends smtp validation session after first
|
211
|
+
# attempt on the first mx server in any fail cases (network connection/timeout error,
|
212
|
+
# smtp validation error). This feature helps to reduce total time of SMTP validation
|
213
|
+
# session up to 1 second. By default this option is disabled.
|
214
|
+
config.smtp_fail_fast = true
|
215
|
+
|
204
216
|
# Optional parameter. This option will be parse bodies of SMTP errors. It will be helpful
|
205
217
|
# if SMTP server does not return an exact answer that the email does not exist
|
206
218
|
# By default this option is disabled, available for SMTP validation only.
|
@@ -233,6 +245,7 @@ Truemail.configuration
|
|
233
245
|
@verifier_domain="somedomain.com",
|
234
246
|
@verifier_email="verifier@example.com",
|
235
247
|
@not_rfc_mx_lookup_flow=true,
|
248
|
+
@smtp_fail_fast=true,
|
236
249
|
@smtp_safe_check=true,
|
237
250
|
@logger=#<Truemail::Logger:0x0000557f837450b0
|
238
251
|
@event=:all, @file="/home/app/log/truemail.log", @stdout=true>>
|
@@ -262,6 +275,7 @@ Truemail.configuration
|
|
262
275
|
@verifier_domain="somedomain.com",
|
263
276
|
@verifier_email="verifier@example.com",
|
264
277
|
@not_rfc_mx_lookup_flow=true,
|
278
|
+
@smtp_fail_fast=true,
|
265
279
|
@smtp_safe_check=true,
|
266
280
|
@logger=#<Truemail::Logger:0x0000557f837450b0
|
267
281
|
@event=:all, @file="/home/app/log/truemail.log", @stdout=true>>
|
@@ -294,7 +308,6 @@ Truemail.host_audit('email@example.com', custom_configuration: custom_configurat
|
|
294
308
|
|
295
309
|
Please note, you should have global or custom configuration for use Truemail gem.
|
296
310
|
|
297
|
-
|
298
311
|
### Validation features
|
299
312
|
|
300
313
|
#### Whitelist/Blacklist check
|
@@ -346,6 +359,7 @@ Truemail.validate('email@white-domain.com')
|
|
346
359
|
@response_timeout=2,
|
347
360
|
@smtp_error_body_pattern=/(?=.*550)(?=.*(user|account|customer|mailbox)).*/i,
|
348
361
|
@not_rfc_mx_lookup_flow=false,
|
362
|
+
@smtp_fail_fast=false,
|
349
363
|
@smtp_safe_check=false,
|
350
364
|
@validation_type_by_domain={"somedomain.com"=>:mx},
|
351
365
|
@verifier_domain="example.com",
|
@@ -392,6 +406,7 @@ Truemail.validate('email@white-domain.com', with: :regex)
|
|
392
406
|
@response_timeout=2,
|
393
407
|
@smtp_error_body_pattern=/(?=.*550)(?=.*(user|account|customer|mailbox)).*/i,
|
394
408
|
@not_rfc_mx_lookup_flow=false,
|
409
|
+
@smtp_fail_fast=false,
|
395
410
|
@smtp_safe_check=false,
|
396
411
|
@validation_type_by_domain={},
|
397
412
|
@verifier_domain="example.com",
|
@@ -424,6 +439,7 @@ Truemail.validate('email@domain.com', with: :regex)
|
|
424
439
|
@response_timeout=2,
|
425
440
|
@smtp_error_body_pattern=/(?=.*550)(?=.*(user|account|customer|mailbox)).*/i,
|
426
441
|
@not_rfc_mx_lookup_flow=false,
|
442
|
+
@smtp_fail_fast=false,
|
427
443
|
@smtp_safe_check=false,
|
428
444
|
@validation_type_by_domain={},
|
429
445
|
@verifier_domain="example.com",
|
@@ -458,6 +474,7 @@ Truemail.validate('email@black-domain.com')
|
|
458
474
|
@response_timeout=2,
|
459
475
|
@smtp_error_body_pattern=/(?=.*550)(?=.*(user|account|customer|mailbox)).*/i,
|
460
476
|
@not_rfc_mx_lookup_flow=false,
|
477
|
+
@smtp_fail_fast=false,
|
461
478
|
@smtp_safe_check=false,
|
462
479
|
@validation_type_by_domain={},
|
463
480
|
@verifier_domain="example.com",
|
@@ -492,6 +509,7 @@ Truemail.validate('email@somedomain.com')
|
|
492
509
|
@response_timeout=2,
|
493
510
|
@smtp_error_body_pattern=/(?=.*550)(?=.*(user|account|customer|mailbox)).*/i,
|
494
511
|
@not_rfc_mx_lookup_flow=false,
|
512
|
+
@smtp_fail_fast=false,
|
495
513
|
@smtp_safe_check=false,
|
496
514
|
@validation_type_by_domain={},
|
497
515
|
@verifier_domain="example.com",
|
@@ -542,6 +560,7 @@ Truemail.validate('email@example.com', with: :regex)
|
|
542
560
|
@response_timeout=2,
|
543
561
|
@smtp_error_body_pattern=/(?=.*550)(?=.*(user|account|customer|mailbox)).*/i,
|
544
562
|
@not_rfc_mx_lookup_flow=false,
|
563
|
+
@smtp_fail_fast=false,
|
545
564
|
@smtp_safe_check=false,
|
546
565
|
@validation_type_by_domain={},
|
547
566
|
@verifier_domain="example.com",
|
@@ -584,6 +603,7 @@ Truemail.validate('email@example.com', with: :regex)
|
|
584
603
|
@response_timeout=2,
|
585
604
|
@smtp_error_body_pattern=/(?=.*550)(?=.*(user|account|customer|mailbox)).*/i,
|
586
605
|
@not_rfc_mx_lookup_flow=false,
|
606
|
+
@smtp_fail_fast=false,
|
587
607
|
@smtp_safe_check=false,
|
588
608
|
@validation_type_by_domain={},
|
589
609
|
@verifier_domain="example.com",
|
@@ -637,6 +657,7 @@ Truemail.validate('email@example.com', with: :mx)
|
|
637
657
|
@response_timeout=2,
|
638
658
|
@smtp_error_body_pattern=/(?=.*550)(?=.*(user|account|customer|mailbox)).*/i,
|
639
659
|
@not_rfc_mx_lookup_flow=false,
|
660
|
+
@smtp_fail_fast=false,
|
640
661
|
@smtp_safe_check=false,
|
641
662
|
@validation_type_by_domain={},
|
642
663
|
@verifier_domain="example.com",
|
@@ -681,6 +702,7 @@ Truemail.validate('email@example.com', with: :mx)
|
|
681
702
|
@response_timeout=2,
|
682
703
|
@smtp_error_body_pattern=/(?=.*550)(?=.*(user|account|customer|mailbox)).*/i,
|
683
704
|
@not_rfc_mx_lookup_flow=true,
|
705
|
+
@smtp_fail_fast=false,
|
684
706
|
@smtp_safe_check=false,
|
685
707
|
@validation_type_by_domain={},
|
686
708
|
@verifier_domain="example.com",
|
@@ -702,6 +724,68 @@ If total count of MX servers is equal to one, `Truemail::Smtp` validator will us
|
|
702
724
|
|
703
725
|
By default, you don't need pass with-parameter to use it. Example of usage is specified below:
|
704
726
|
|
727
|
+
##### SMTP fail fast enabled
|
728
|
+
|
729
|
+
Truemail can use fail fast behaviour for SMTP validation layer. When `smtp_fail_fast = true` it means that `truemail` ends smtp validation session after first attempt on the first mx server in any fail cases (network connection/timeout error, smtp validation error). This feature helps to reduce total time of SMTP validation session up to 1 second.
|
730
|
+
|
731
|
+
```ruby
|
732
|
+
require 'truemail'
|
733
|
+
|
734
|
+
Truemail.configure do |config|
|
735
|
+
config.verifier_email = 'verifier@example.com'
|
736
|
+
config.smtp_fail_fast = true
|
737
|
+
end
|
738
|
+
|
739
|
+
Truemail.validate('email@example.com')
|
740
|
+
|
741
|
+
# SMTP validation failed, smtp fail fast validation scenario
|
742
|
+
=> #<Truemail::Validator:0x00007fdc4504f460
|
743
|
+
@result=
|
744
|
+
#<struct Truemail::Validator::Result
|
745
|
+
success=false,
|
746
|
+
email="email@example.com",
|
747
|
+
domain="example.com",
|
748
|
+
mail_servers=["127.0.1.1", "127.0.1.2", "127.0.1.3"], # there are 3 mail servers in a row
|
749
|
+
errors={:smtp=>"smtp error"},
|
750
|
+
smtp_debug=
|
751
|
+
[#<Truemail::Validate::Smtp::Request:0x00007fdc43150b90 # but iteration has been stopped after the first failure
|
752
|
+
@attempts=nil,
|
753
|
+
@configuration=
|
754
|
+
#<Truemail::Validate::Smtp::Request::Configuration:0x00007fdc43150b18
|
755
|
+
@connection_timeout=2,
|
756
|
+
@response_timeout=2,
|
757
|
+
@verifier_domain="example.com",
|
758
|
+
@verifier_email="verifier@example.com">,
|
759
|
+
@email="email@example.com",
|
760
|
+
@host="127.0.1.1",
|
761
|
+
@response=
|
762
|
+
#<struct Truemail::Validate::Smtp::Response
|
763
|
+
port_opened=false,
|
764
|
+
connection=nil,
|
765
|
+
helo=nil,
|
766
|
+
mailfrom=nil,
|
767
|
+
rcptto=nil,
|
768
|
+
errors={}>>],
|
769
|
+
configuration=
|
770
|
+
#<Truemail::Configuration:0x00007fdc4504f5c8
|
771
|
+
@blacklisted_domains=[],
|
772
|
+
@connection_attempts=2,
|
773
|
+
@connection_timeout=2,
|
774
|
+
@default_validation_type=:smtp,
|
775
|
+
@email_pattern=/(?=\A.{6,255}\z)(\A([\p{L}0-9]+[\w|\-.+]*)@((?i-mx:[\p{L}0-9]+([\-.]{1}[\p{L}0-9]+)*\.\p{L}{2,63}))\z)/,
|
776
|
+
@not_rfc_mx_lookup_flow=false,
|
777
|
+
@response_timeout=2,
|
778
|
+
@smtp_error_body_pattern=/(?=.*550)(?=.*(user|account|customer|mailbox)).*/i,
|
779
|
+
@smtp_fail_fast=true,
|
780
|
+
@smtp_safe_check=false,
|
781
|
+
@validation_type_by_domain={},
|
782
|
+
@verifier_domain="example.com",
|
783
|
+
@verifier_email="verifier@example.com",
|
784
|
+
@whitelist_validation=false,
|
785
|
+
@whitelisted_domains=[]>>,
|
786
|
+
@validation_type=:smtp>
|
787
|
+
```
|
788
|
+
|
705
789
|
##### SMTP safe check disabled
|
706
790
|
|
707
791
|
With `smtp_safe_check = false`
|
@@ -735,6 +819,7 @@ Truemail.validate('email@example.com')
|
|
735
819
|
@response_timeout=2,
|
736
820
|
@smtp_error_body_pattern=/(?=.*550)(?=.*(user|account|customer|mailbox)).*/i,
|
737
821
|
@not_rfc_mx_lookup_flow=false,
|
822
|
+
@smtp_fail_fast=false,
|
738
823
|
@smtp_safe_check=false,
|
739
824
|
@validation_type_by_domain={},
|
740
825
|
@verifier_domain="example.com",
|
@@ -784,6 +869,7 @@ Truemail.validate('email@example.com')
|
|
784
869
|
@response_timeout=2,
|
785
870
|
@smtp_error_body_pattern=/(?=.*550)(?=.*(user|account|customer|mailbox)).*/i,
|
786
871
|
@not_rfc_mx_lookup_flow=false,
|
872
|
+
@smtp_fail_fast=false,
|
787
873
|
@smtp_safe_check=false,
|
788
874
|
@validation_type_by_domain={},
|
789
875
|
@verifier_domain="example.com",
|
@@ -845,6 +931,7 @@ Truemail.validate('email@example.com')
|
|
845
931
|
@response_timeout=2,
|
846
932
|
@smtp_error_body_pattern=/(?=.*550)(?=.*(user|account|customer|mailbox)).*/i,
|
847
933
|
@not_rfc_mx_lookup_flow=false,
|
934
|
+
@smtp_fail_fast=false,
|
848
935
|
@smtp_safe_check=false,
|
849
936
|
@validation_type_by_domain={},
|
850
937
|
@verifier_domain="example.com",
|
@@ -891,6 +978,7 @@ Truemail.validate('email@example.com')
|
|
891
978
|
@response_timeout=2,
|
892
979
|
@smtp_error_body_pattern=/(?=.*550)(?=.*(user|account|customer|mailbox)).*/i,
|
893
980
|
@not_rfc_mx_lookup_flow=false,
|
981
|
+
@smtp_fail_fast=false,
|
894
982
|
@smtp_safe_check=false,
|
895
983
|
@validation_type_by_domain={},
|
896
984
|
@verifier_domain="example.com",
|
@@ -938,6 +1026,7 @@ Truemail.host_audit
|
|
938
1026
|
@response_timeout=2,
|
939
1027
|
@smtp_error_body_pattern=/(?=.*550)(?=.*(user|account|customer|mailbox)).*/i,
|
940
1028
|
@not_rfc_mx_lookup_flow=false,
|
1029
|
+
@smtp_fail_fast=false,
|
941
1030
|
@smtp_safe_check=false,
|
942
1031
|
@validation_type_by_domain={},
|
943
1032
|
@verifier_domain="example.com",
|
@@ -964,6 +1053,7 @@ Truemail.host_audit
|
|
964
1053
|
@response_timeout=2,
|
965
1054
|
@smtp_error_body_pattern=/(?=.*550)(?=.*(user|account|customer|mailbox)).*/i,
|
966
1055
|
@not_rfc_mx_lookup_flow=false,
|
1056
|
+
@smtp_fail_fast=false,
|
967
1057
|
@smtp_safe_check=false,
|
968
1058
|
@validation_type_by_domain={},
|
969
1059
|
@verifier_domain="example.com",
|
@@ -1012,6 +1102,7 @@ Truemail::Log::Serializer::AuditorJson.call(Truemail.host_audit)
|
|
1012
1102
|
"whitelisted_domains": null,
|
1013
1103
|
"blacklisted_domains": null,
|
1014
1104
|
"not_rfc_mx_lookup_flow": false,
|
1105
|
+
"smtp_fail_fast": false,
|
1015
1106
|
"smtp_safe_check": false,
|
1016
1107
|
"email_pattern": "default gem value",
|
1017
1108
|
"smtp_error_body_pattern": "default gem value"
|
@@ -1050,6 +1141,7 @@ Truemail::Log::Serializer::ValidatorJson.call(Truemail.validate('nonexistent_ema
|
|
1050
1141
|
"whitelisted_domains": null,
|
1051
1142
|
"blacklisted_domains": null,
|
1052
1143
|
"not_rfc_mx_lookup_flow": false,
|
1144
|
+
"smtp_fail_fast": false,
|
1053
1145
|
"smtp_safe_check": false,
|
1054
1146
|
"email_pattern": "default gem value",
|
1055
1147
|
"smtp_error_body_pattern": "default gem value"
|
@@ -1090,6 +1182,7 @@ Truemail.host_audit.as_json
|
|
1090
1182
|
"whitelisted_domains": null,
|
1091
1183
|
"blacklisted_domains": null,
|
1092
1184
|
"not_rfc_mx_lookup_flow": false,
|
1185
|
+
"smtp_fail_fast": false,
|
1093
1186
|
"smtp_safe_check": false,
|
1094
1187
|
"email_pattern": "default gem value",
|
1095
1188
|
"smtp_error_body_pattern": "default gem value"
|
@@ -1125,6 +1218,7 @@ Truemail.validate('nonexistent_email@bestweb.com.ua').as_json
|
|
1125
1218
|
"whitelisted_domains": null,
|
1126
1219
|
"blacklisted_domains": null,
|
1127
1220
|
"not_rfc_mx_lookup_flow": false,
|
1221
|
+
"smtp_fail_fast": false,
|
1128
1222
|
"smtp_safe_check": false,
|
1129
1223
|
"email_pattern": "default gem value",
|
1130
1224
|
"smtp_error_body_pattern": "default gem value"
|
@@ -21,7 +21,7 @@ module Truemail
|
|
21
21
|
:blacklisted_domains,
|
22
22
|
:logger
|
23
23
|
|
24
|
-
attr_accessor :whitelist_validation, :not_rfc_mx_lookup_flow, :smtp_safe_check
|
24
|
+
attr_accessor :whitelist_validation, :not_rfc_mx_lookup_flow, :smtp_fail_fast, :smtp_safe_check
|
25
25
|
|
26
26
|
def initialize(&block)
|
27
27
|
instance_initializer.each do |instace_variable, value|
|
@@ -102,6 +102,7 @@ module Truemail
|
|
102
102
|
whitelist_validation: false,
|
103
103
|
blacklisted_domains: [],
|
104
104
|
not_rfc_mx_lookup_flow: false,
|
105
|
+
smtp_fail_fast: false,
|
105
106
|
smtp_safe_check: false
|
106
107
|
}
|
107
108
|
end
|
@@ -24,13 +24,23 @@ module Truemail
|
|
24
24
|
|
25
25
|
private
|
26
26
|
|
27
|
-
def
|
28
|
-
|
27
|
+
def fail_fast?
|
28
|
+
configuration.smtp_fail_fast
|
29
|
+
end
|
30
|
+
|
31
|
+
def filtered_mail_servers_by_fail_fast_scenario
|
32
|
+
fail_fast? ? mail_servers.first(1) : mail_servers
|
29
33
|
end
|
30
34
|
|
31
35
|
def attempts
|
32
|
-
@attempts ||=
|
33
|
-
|
36
|
+
@attempts ||= begin
|
37
|
+
return {} if fail_fast? || !mail_servers.one?
|
38
|
+
{ attempts: configuration.connection_attempts }
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def request
|
43
|
+
smtp_results.last
|
34
44
|
end
|
35
45
|
|
36
46
|
def rcptto_error
|
@@ -38,7 +48,7 @@ module Truemail
|
|
38
48
|
end
|
39
49
|
|
40
50
|
def establish_smtp_connection
|
41
|
-
|
51
|
+
filtered_mail_servers_by_fail_fast_scenario.each do |mail_server|
|
42
52
|
smtp_results << Truemail::Validate::Smtp::Request.new(
|
43
53
|
configuration: configuration, host: mail_server, email: result.punycode_email, **attempts
|
44
54
|
)
|
data/lib/truemail/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: truemail
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vladislav Trotsenko
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: simpleidn
|