0

IMAPを使用してレールでメールを受信し、新しいメールが届いたことをユーザーに通知しようとしています。message_from、message_to、messageなどの電子メール情報を保存する必要がある「email」というテーブルがあり、新しいメールが届くたびにgmailから電子メールを取得する方法を知りたいと思っていました.そして、以下はコードです

  require 'net/imap'
  require 'net/http'

  imap = Net::IMAP.new('imap.gmail.com', 993, usessl = true, certs = nil, verify = false)
  imap.login('sampleuser', 'password')
  imap.select('INBOX')
  imap.search(["NOT", "SEEN"]).each do |message_id|
    emails = imap.fetch(mail,'RFC822')[0].attr['RFC822']
    @mail = Email.new("from" => emails.from, "to" => emails.to)
    @mail.save
  end

しかし、私はmessage_fromまたはmessage_toまたはメッセージを取得できません。エラーが次のように表示されます

TypeError (can't convert Symbol into Integer):

これらの詳細を取得するにはどうすればよいですか。新しいエントリがテーブルに作成されたときにユーザーに通知を送信し、それをクリックすると、メールを表示する必要があるページに移動する必要があります。

どうすればこれを行うことができますか、スケジューラのようなものを使用して、新しいメールが届いたかどうかを確認する必要があります。また、メールを読んでいない場合、メールを既に受信しており、複製したくないことを確認するにはどうすればよいですか。私を助けてください。

4

1 に答える 1

2

Your best bet on receiving emails is Griddler. It's easy to setup

You can send the email to the model you want and do the processing there.

于 2013-11-13T05:22:42.307 に答える