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):
これらの詳細を取得するにはどうすればよいですか。新しいエントリがテーブルに作成されたときにユーザーに通知を送信し、それをクリックすると、メールを表示する必要があるページに移動する必要があります。
どうすればこれを行うことができますか、スケジューラのようなものを使用して、新しいメールが届いたかどうかを確認する必要があります。また、メールを読んでいない場合、メールを既に受信しており、複製したくないことを確認するにはどうすればよいですか。私を助けてください。