Skip to content

Latest commit

 

History

History
366 lines (299 loc) · 10.8 KB

CHANGELOG.md

File metadata and controls

366 lines (299 loc) · 10.8 KB

Changelog

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[1.4.2] - 2019-11-27

Changed

  • Truemail::Configuration
  • gem development dependencies
  • linters configs

[1.4.1] - 2019-11-20

Changed

  • gem development dependencies
  • linters configs
  • gem documentation

Removed

[1.4.0] - 2019-10-28

Added

  • Event logger (ability to output validation logs to stdout/file)
  • JSON serializer for validator instance
  • Changelog
  • Logo

Truemail gem allows to output tracking events to stdout/file or both of these. Please note, at least one of the outputs must exist. Tracking event by default is :error

Available tracking events

  • :all, all detected events including success validation cases
  • :unrecognized_error, unrecognized errors only (when smtp_safe_check = true and SMTP server does not return an exact answer that the email does not exist)
  • :recognized_error, recognized errors only
  • :error, recognized and unrecognized errors only
Truemail.configure do |config|
  config.logger = { tracking_event: :all, stdout: true, log_absolute_path: '/home/app/log/truemail.log' }
end

Also starting from this version Truemail has built in JSON serializer for Truemail::Validator instance, so you can represent your email validation result as json.

Truemail::Log::Serializer::Json.call(Truemail.validate('nonexistent_email@bestweb.com.ua'))

Changed

  • Truemail::Configuration
  • Truemail::Validator
  • Truemail::Validate::Regex
  • Truemail::VERSION
  • gem documentation
  • gem description

[1.3.0] - 2019-09-16

Added

  • Ability to create new Truemail::Configuration instance with block
  • Truemail::Validate::Smtp::Request::Configuration

Changed

  • Truemail::Wrapper
  • Truemail::Validate::Base
  • Truemail::Validator
  • Truemail::Validator::Result
  • Truemail::Validate::Regex
  • Truemail::Validate::Mx
  • Truemail::Validate::Smtp
  • Truemail::Validate::Smtp::Request
  • Truemail::Audit::Base
  • Truemail::Auditor
  • Truemail::Audit::Ptr
  • ::Truemail module
  • Truemail::VERSION
  • gem documentation
  • gem description

[1.2.1] - 2019-06-27

Fixed

  • Removed memoization from DomainListMatch#whitelisted_domain?

Changed

  • Truemail::VERSION
  • gem documentation

[1.2.0] - 2019-06-26

Added

  • Configurable option: validation for whitelisted domains only.

When email domain in whitelist and whitelist_validation is sets equal to true validation type will be passed to other validators. Validation of email which not contains whitelisted domain always will return false.

Truemail.configure do |config|
  config.verifier_email = 'verifier@example.com'
  config.whitelisted_domains = ['white-domain.com']
  config.whitelist_validation = true
end

Email has whitelisted domain

Truemail.validate('email@white-domain.com', with: :regex)

#<Truemail::Validator:0x000055b8429f3490
  @result=#<struct Truemail::Validator::Result
    success=true,
    email="email@white-domain.com",
    domain=nil,
    mail_servers=[],
    errors={},
    smtp_debug=nil>,
  @validation_type=:regex>

Email hasn't whitelisted domain

Truemail.validate('email@domain.com', with: :regex)

#<Truemail::Validator:0x000055b8429f3490
  @result=#<struct Truemail::Validator::Result
    success=false,
    email="email@domain.com",
    domain=nil,
    mail_servers=[],
    errors={},
    smtp_debug=nil>,
  @validation_type=:blacklist>

Changed

  • Truemail::VERSION
  • gem documentation

[1.1.0] - 2019-06-18

Added

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

Truemail.configure do |config|
  config.verifier_email = 'verifier@example.com'
  config.default_validation_type = :mx
end

Changed

  • Truemail::VERSION
  • gem documentation

[1.0.1] - 2019-06-08

Added

  • Result validation type marker for domain list match check
Truemail.validate('email@white-domain.com')

#<Truemail::Validator:0x000055b8429f3490
  @result=#<struct Truemail::Validator::Result
    success=true,
    email="email@white-domain.com",
    domain=nil,
    mail_servers=[],
    errors={},
    smtp_debug=nil>,
  @validation_type=:whitelist>

Truemail.validate('email@black-domain.com')

#<Truemail::Validator:0x000023y8429f3493
  @result=#<struct Truemail::Validator::Result
    success=false,
    email="email@black-domain.com",
    domain=nil,
    mail_servers=[],
    errors={},
    smtp_debug=nil>,
  @validation_type=:blacklist>

Changed

  • Truemail::VERSION
  • gem documentation

[1.0] - 2019-06-04

Added

  • Feature domain whitelist blacklist. Other validations will not processed even if it was defined in validation_type_for.
Truemail.configure do |config|
  # Optional parameter. Validation of email which contains whitelisted domain
  # always will return true.
  config.whitelisted_domains = ['somedomain1.com', 'somedomain2.com']

  # Optional parameter. Validation of email which contains whitelisted domain
  # always will return false.
  config.blacklisted_domains = ['somedomain1.com', 'somedomain2.com']
end

and

Truemail.configuration.whitelisted_domains = ['somedomain1.com', 'somedomain2.com']
Truemail.configuration.blacklisted_domains = ['somedomain1.com', 'somedomain2.com']

Removed

  • :skip validation type for validation_type_for

Fixed

  • error key in lower_snake_case

Changed

  • Truemail::VERSION
  • gem documentation

[0.2] - 2019-05-23

Added

  • skip validation by domain for validation_type_for configuration option:
Truemail.configure do |config|
  config.validation_type_for = { 'somedomain.com' => :skip }
end

and

Truemail.configuration.validation_type_for = { 'somedomain.com' => :skip }

Changed

  • Truemail::VERSION
  • gem documentation

[0.1.10] - 2019-05-10

Added

Changed

  • Truemail::VERSION
  • gem documentation

[0.1.9] - 2019-04-29

Fixed

  • Empty ptr constant

[0.1.8] - 2019-04-29

Added

Fixed

Changed

  • Truemail::VERSION
  • gem documentation

[0.1.7] - 2019-04-17

Added

Changed

  • Truemail::VERSION
  • gem documentation

[0.1.6] - 2019-04-08

Added

Fixed

Changed

  • Truemail::VERSION
  • gem documentation

[0.1.5] - 2019-04-05

Added

  • Retries for Truemail::Validate::Smtp for cases when one mx server

Changed

  • Truemail::Configuration class, please use .connection_attempts instead .retry_count
  • Truemail::VERSION
  • gem documentation

[0.1.4] - 2019-04-01

Added

  • Checking A record presence if MX and CNAME records not exist, issue details
  • Handling of CNAME records, issue details
  • Checking A record if MX and CNAME records not found, issue details
  • Supporting of multihomed MX records, conversion host names to ips, issue details
  • Timeout configuration for DNS resolver, issue details
  • .valid? helper

Changed

  • Truemail::VERSION
  • gem documentation

[0.1.3] - 2019-03-27

Added

  • Independent domain name extractor to Truemail::Validate::Mx#run

Fixed

  • Default REGEX_EMAIL_PATTERN, issue details
    • local part of address can't start with a dot or special symbol
    • local part of address can include + symbol
  • Default REGEX_DOMAIN_PATTERN, issue details
    • TLD size increased up to 63 characters
  • Case sensitive domain names, issue details

Changed

  • Truemail::VERSION
  • gem documentation

[0.1.0] - 2019-03-26

Added

  • 'SMTP safe check' option for cases when SMTP server does not return an exact answer that the email does not exist.
Truemail.configure do |config|
  config.verifier_email = 'verifier@example.com'
  config.smtp_safe_check = true
end

Truemail.validate('email@example.com')

# Successful SMTP validation
=> #<Truemail::Validator:0x0000000002ca2c70
    @result=
      #<struct Truemail::Validator::Result
        success=true,
        email="email@example.com",
        domain="example.com",
        mail_servers=["mx1.example.com"],
        errors={},
        smtp_debug=
          [#<Truemail::Validate::Smtp::Request:0x0000000002c95d40
            @configuration=
              #<Truemail::Configuration:0x0000000002c95b38
                @connection_timeout=2,
                @email_pattern=/regex_pattern/,
                @response_timeout=2,
                @smtp_safe_check=true,
                @validation_type_by_domain={},
                @verifier_domain="example.com",
                @verifier_email="verifier@example.com">,
              @email="email@example.com",
              @host="mx1.example.com",
              @response=
                #<struct Truemail::Validate::Smtp::Response
                  port_opened=true,
                  connection=false,
                  helo=
                    #<Net::SMTP::Response:0x0000000002c934c8
                    @status="250",
                    @string="250 mx1.example.com\n">,
                  mailfrom=false,
                  rcptto=nil,
                  errors={:mailfrom=>"554 5.7.1 Client host blocked\n", :connection=>"server dropped connection after response"}>>,]>,
    @validation_type=:smtp>

Changed

  • Truemail::VERSION
  • gem documentation