Sha256: e61200160e127d90d268f8bd4b82dd2ac468197ea934db071d4bbd01ba84de9d

Contents?: true

Size: 1.57 KB

Versions: 2

Compression:

Stored size: 1.57 KB

Contents

module Email
  module Verification
    class Gmail < Base
      
      def retrieve_verification_code(email:, password:, mark_as_read: true, mailboxes: [], settings: {})
        emails    =   []
        result    =   nil
    
        begin
          args    =   settings_provided?(settings) ? {from: settings[:address]} : {}
          
          ::Gmail.connect(email, password) do |gmail|
            gmail.inbox.emails(args).each do |email|
              log("Email - from: #{email.from.first.name}, subject: #{email.subject}")
              
              if settings_provided?(settings)
                matching_name       =   settings[:from].to_s.empty? || (!settings[:from].to_s.empty? && email.from.first.name == settings[:from])
                matching_subject    =   settings[:subject].nil?     || (!settings[:subject].nil? && email.subject =~ settings[:subject])
                
                emails  <<  email_body(email) if matching_name && matching_subject
              else
                emails  <<  email_body(email)
              end
              
              email.read! if mark_as_read
            end
          end
        
        rescue Net::IMAP::BadResponseError => e
          raise ArgumentError, "You need to enable logins for less secure apps in Gmail for #{email}!"
        end
        
        if settings_provided?(settings)
          message     =   emails.last&.to_s
          result      =   message&.match(settings[:regex])&.[](:match)
        else
          result      =   emails
        end
        
        return result
      end
      
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
email-verification-0.1.5 lib/email/verification/gmail.rb
email-verification-0.1.4 lib/email/verification/gmail.rb