# File lib/mail/network/delivery_methods/smtp.rb, line 97
    def deliver!(mail)
      envelope_from, destinations, message = check_params(mail)

      smtp = Net::SMTP.new(settings[:address], settings[:port])
      if settings[:tls] || settings[:ssl]
        if smtp.respond_to?(:enable_tls)
          unless settings[:openssl_verify_mode]
            smtp.enable_tls
          else
            openssl_verify_mode = settings[:openssl_verify_mode]
            if openssl_verify_mode.kind_of?(String)
              openssl_verify_mode = "OpenSSL::SSL::VERIFY_#{openssl_verify_mode.upcase}".constantize
            end
            context = Net::SMTP.default_ssl_context
            context.verify_mode = openssl_verify_mode
            smtp.enable_tls(context)
          end        
        end
      elsif settings[:enable_starttls_auto]
        if smtp.respond_to?(:enable_starttls_auto) 
          unless settings[:openssl_verify_mode]
            smtp.enable_starttls_auto
          else
            openssl_verify_mode = settings[:openssl_verify_mode]
            if openssl_verify_mode.kind_of?(String)
              openssl_verify_mode = "OpenSSL::SSL::VERIFY_#{openssl_verify_mode.upcase}".constantize
            end
            if RUBY_VERSION >= '1.9.0'
              context = Net::SMTP.default_ssl_context
              context.verify_mode = openssl_verify_mode
              smtp.enable_tls(context)
            else
              smtp.enable_tls(openssl_verify_mode)
            end
          end
        end
      end
      
      response = nil
      smtp.start(settings[:domain], settings[:user_name], settings[:password], settings[:authentication]) do |smtp_obj|
        response = smtp_obj.sendmail(message, envelope_from, destinations)
      end

      return settings[:return_response] ? response : self
    end