Sha256: e91181a7d227f5f7f27c6b04582a0ffbe2e5bf3a6194cf45cb2921cc445488b8

Contents?: true

Size: 1.49 KB

Versions: 3

Compression:

Stored size: 1.49 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)                
                if email.from.first.name == settings[:from] && email.subject =~ settings[:subject]
                  emails  <<  (email.html_part || email.text_part || email).body.decoded
                  email.read! if mark_as_read
                end
              else
                emails    <<  (email.html_part || email.text_part || email).body.decoded
                email.read! if mark_as_read
              end
            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

3 entries across 3 versions & 1 rubygems

Version Path
email-verification-0.1.2 lib/email/verification/gmail.rb
email-verification-0.1.1 lib/email/verification/gmail.rb
email-verification-0.1.0 lib/email/verification/gmail.rb