Receive emails from gmail or any other email provider ( IMAP Ruby On Rails )


Configure your gmail for sending emails to other mail clients 

You can retrieve your Gmail messages with a client or device that supports IMAP, like Microsoft Outlook or Apple Mail.

Enable IMAP in your Gmail settings

1. Sign in to Gmail.
2. Click the gear in the top right .
3. Select Settings.
4. Click Forwarding and POP/IMAP.
5. Select Enable IMAP.
6. Click Save Changes.

If you're using a client that's not listed above, you can also use the following information to configure your IMAP. If you have problems, contact your mail client's customer support department for further instructions.

Incoming Mail (IMAP) Server - Requires SSL
imap.gmail.com
Port: 993
Requires SSL:Yes

For more information about imap you can refer that link
https://support.google.com/mail/troubleshooter/1668960?hl=en#ts=1665018%2C1665144

After that go to this url and you will find lots of information for allowing access by device or any mail client:
https://support.google.com/mail/accounts/answer/78754
=> You can find out the screenshot of same thing below that I have followed to get access for my ruby on rails application

1. Allow access to your Google account: 
https://accounts.google.com/b/0/DisplayUnlockCaptcha



2. Access for less secure apps:
https://www.google.com/settings/security/lesssecureapps



After doing all these configurations and setting, we can access the gmail emails using IMAP : 

We are using ruby libraries to fetching emails from gmail  using :
An IMAP client connects to a server, and then authenticates itself using either authenticate() or login().

List sender and subject of all recent messages in the default mailbox

require "net/imap.rb"
imap = Net::IMAP.new('imap.gmail.com',993,true)
# We are using gmail as a mail provider so below mentioned method can be differ as per mail provider
imap.login('test@gmail.com', 'password')
imap.examine('INBOX')
imap.search(["All"]) // Shows all ids of inbox message
imap.search(["All"]) /
imap.search(["RECENT"]).each do |message_id|
  envelope = imap.fetch(message_id, "ENVELOPE")[0].attr["ENVELOPE"]
  body = imap.fetch(message_id,'BODY[TEXT]')[0].attr['BODY[TEXT]']
  puts "#{envelope.from[0].name}: \t#{envelope.subject}"
end


For more information about using imap with ruby you can refer below mentioned link
http://ruby-doc.org/stdlib-1.9.3/libdoc/net/imap/rdoc/Net/IMAP.html


Example: Imap service that fetch the new updated emails from gmail. We are saving id of last gmail mail in database
    
class ImapService
  require "net/imap.rb"

  def initialize(params={})
    @email = params[:email] || 'example@gmail.com'
    @password = params[:password] ||  'testpassword'
    @imap_server = params[:imap_server] ||  'imap.gmail.com'
    @port = params[:port] || 993
    @ssl = params[:ssl] || true
  end

  def save_emails_in_database
    imap = select_inbox
    latest_email = LatestEmail.last
    ## Check that in database we have stored an id of last fetched email or not
    last_email_id = latest_email.email_id rescue nil
    if last_email_id
      ## We will fetch all emails greater than the saved id in database
      new_email_ids = fetch_latest_emails(imap, last_email_id)
      fetch_body_and_save(imap, new_email_ids)
      last_email_id = new_email_ids.last
    else
      last_email_id = fetch_last_email(imap)
    end
    true
    ## Save last_email_id in database 
    if latest_email.blank?
     latest_email = LatestEmail.new(email_id: last_email_id)
    else
     latest_email.email_id=last_email_id
    end
    latest_email.save
  end

  def save_latest_emails_in_database
    begin
     save_emails_in_database
    rescue
      false
    end
  end

  private
    attr_reader :email, :password, :imap_server, :password, :port, :ssl

  # attr_reader :address

  def external_imap_service
    Net::IMAP
  end

  def fetch_latest_emails(imap, last_email_id)
    imap.search("#{last_email_id}:*")
  end

  def fetch_all_emails(imap)
    imap.search("all").last
  end

  def connect_to_imap
    external_imap_service.new(imap_server,port,ssl)
  end

  def select_inbox
    imap = connect_to_imap
    imap.login(email, password)
    imap.examine('INBOX')
    return imap
  end

  def fetch_body_and_save(imap, new_email_ids)
    new_email_ids.each do |email_id|
      body_text = fetch_email_body(imap, email_id)
      ## Save your emails from here :-)
    end
  end

  def fetch_email_body(imap, email_id)
     imap.fetch(email_id,'BODY[TEXT]')[0].attr['BODY[TEXT]']
  end

end





Post a Comment

39 comments:

  1. Site Traffic: As talked about above, it is hard to see how individuals are drawing in with your image through disconnected promoting.ExcelR Digital Marketing Course in Sydney

    ReplyDelete
  2. Thanks for the blog loaded with so many information. Stopping by your blog helped me to get what I was looking for. Haga clic aqui

    ReplyDelete
  3. Thank you because you have been willing to share information with us. we will always appreciate all you have done here because I know you are very concerned with our. Buy Old Gmail Accounts

    ReplyDelete
  4. Great Information sharing .. I am very happy to read this article .. thanks for giving us go through info.Fantastic nice. I appreciate this post. windows iso

    ReplyDelete
  5. thank you for this awesome and informative post www.hotmail.com

    ReplyDelete
  6. This is a fantastic website and I can not recommend you guys enough. Buy Gmail Accounts

    ReplyDelete
  7. I was surfing net and fortunately came across this site and found very interesting stuff here. Its really fun to read. I enjoyed a lot. Thanks for sharing this wonderful information. Buy Old Gmail Accounts

    ReplyDelete
  8. Attend The Data Analytics Course From ExcelR. Practical Data Analytics Course Sessions With Assured Placement Support From Experienced Faculty. ExcelR Offers The Data Analytics Course.
    ExcelR Data Analytics Course

    ReplyDelete
  9. you may still get services popping-up and, any attempts to re-install it or install other security software may be denied. If that is what happens in your case, windows 10

    ReplyDelete
  10. He needs to have a comprehension of the business, items and its utilization. He is relied upon to make a format and structure the site. For future extensions, Digital Market service

    ReplyDelete
  11. lines including promoting, visual depiction, website composition and improvement, Advanced organization administrations cross such a large number of the customary assistance

    ReplyDelete
  12. lines including promoting, visual depiction, website composition and improvement, blog comment service

    ReplyDelete
  13. Portable promoting, radio, TV, electronic boards and significantly more are accessible as showcasing outlets. blog comments service in 1$

    ReplyDelete
  14. that your data is unmistakable to the potential client at the fitting time. In the computerized advertising world, Stationary Design

    ReplyDelete
  15. Experience - What sort of aptitudes and experience does the organization have? To what extent has it been working together? Business Card Design

    ReplyDelete
  16. The next time I read a blog, I hope that it doesnt disappoint me as much as this one. I mean, I know it was my choice to read, but I actually thought you have something interesting to say. All I hear is a bunch of whining about something that you could fix if you werent too busy looking for attention. hotmail-inicio-sesion.com/

    ReplyDelete
  17. We provide a range of packages of Google accounts for sale at a reasonable price. Our bundle begins from $30, which is the least fee for getting the full benefit of Google account. All the Google accounts are manually crafted accounts that are entirely worthy of investing your money. We offer the most reasonably priced applications in the market. Buy aged Gmail Accounts

    ReplyDelete
  18. I would like to say that this blog really convinced me to do it! Thanks, very good post. purple gemstone

    ReplyDelete
  19. This post is very simple to read and appreciate without leaving any details out. Great work! Buy Social Bookmarking

    ReplyDelete
  20. Great Information sharing .. I am very happy to read this article .. thanks for giving us go through info.Fantastic nice. I appreciate this post. garnet ring

    ReplyDelete
  21. You might comment on the order system of the blog. You should chat it's splendid. Your blog audit would swell up your visitors. I was very pleased to find this site.I wanted to thank you for this great read!! hotmail.com

    ReplyDelete
  22. I’m excited to uncover this page. I need to to thank you for ones time for this particularly fantastic read!! I definitely really liked every part of it and i also have you saved to fav to look at new information in your site. hotmail.com

    ReplyDelete
  23. Incredible post yet I was contemplating whether you could make somewhat more with respect to this issue? I'd be grateful for the remote possibility that you could clarify fairly further. Worth it Click Here

    ReplyDelete
  24. Unprecedented article. I believe you will continue having numerous such incredible articles to bestow to us. I acknowledge numerous people will be shocked to scrutinize this article. thank you. Visit Us

    ReplyDelete
  25. Thanks for your post. I've been thinking about forming a genuinely proportional post all through the latest barely any weeks, I'll apparently keep it straightforward and association with this fairly if that cool. See More

    ReplyDelete
  26. This blog site, simply Finding some blog sites, seems an, actually, the magnificent framework you're utilizing. I'm by and by utilizing WordPress for a couple of my online journals yet looking to transform among them over to a framework like yours as a practice. Visit Us

    ReplyDelete
  27. I wished to send you this exceptionally little statement to help say an abundance of thanks over again over the satisfying procedures you have really discussed on this web webpage. This is quite magnanimous of you to make widely unequivocally what an assortment of us could have cost an electronic book. Click Here

    ReplyDelete
  28. Cool stuff you have and you keep overhaul every one of us

    data science course

    ReplyDelete
  29. I have to search sites with relevant information on given topic and provide them to teacher our opinion and the article.

    Simple Linear Regression

    Correlation vs Covariance

    ReplyDelete
  30. Attend The Data Analytics Courses From ExcelR. Practical Data Analytics Courses Sessions With Assured Placement Support From Experienced Faculty. ExcelR Offers The Data Analytics Courses.
    Data Analytics Courses

    ReplyDelete
  31. I am thankful to you for sharing this plethora of useful information. I found this resource utmost beneficial for me. Thanks a lot for hard work. aprenda acessar o Hotmail login agora

    ReplyDelete
  32. Thanks for an interesting blog. What else may I get that sort of info written in such a perfect approach? I have an undertaking that I am just now operating on, and I have been on the lookout for such info.
    Best Data Science training in Mumbai

    Data Science training in Mumbai


    ReplyDelete
  33. Thank you again for all the knowledge you distribute,Good post. I was very interested in the article, it's quite inspiring I should admit. I like visiting you site since I always come across interesting articles like this one.Great Job, I greatly appreciate that.Do Keep sharing! Regards, buy instagram likes uk

    ReplyDelete
  34. It's so great to know you are a writer that cares about the information you provide. This is smartly done and well-written in my opinion.
    SAP training in Kolkata
    SAP training Kolkata
    Best SAP training in Kolkata
    SAP course in Kolkata
    SAP training institute Kolkata

    ReplyDelete
  35. This is a wonderful article, Given so much info in it, These type of articles keeps the users interest in the website, and keep on sharing more ... good luck.

    Simple Linear Regression

    Correlation vs Covariance

    ReplyDelete
  36. Very interesting to read this article.I would like to thank you for the efforts you had made for writing this awesome article. This article inspired me to read more. keep it up.
    Correlation vs Covariance
    Simple linear regression
    data science interview questions

    ReplyDelete
  37. The craving to bring in cash online using social stages is totally typical. So as to accomplish this journey, an ideal blogging framework is required. A sound blogging framework would permit its client to embrace a deliberate way to deal with extinguish his blogging attempts Read More

    ReplyDelete
  38. This is my first time i visit here. I found so many interesting stuff in your blog especially its discussion. From the tons of comments on your articles, I guess I am not the only one having all the enjoyment here keep up the good work entrar hotmail

    ReplyDelete