2013-05-13 3 views
0

gmail-xoauth Gem을 사용하여 Gmail에서 이메일을 읽으려고합니다. 이메일을 읽고 읽지 않은 상태로두고 싶습니다.Gmail XOAUTH 메일을 읽지 않고 읽으십시오.

먼저 머리글 만 읽으려고했습니다. 공장.

imap = Net::IMAP.new('imap.gmail.com', 993, usessl = true, certs = nil, verify = false) 
imap.authenticate('XOAUTH2', email, access_token) 
imap.select('INBOX') 
imap.search(["SINCE", since]).each do |message_id| 

    msg = imap.fetch(message_id,'RFC822.HEADER')[0].attr['RFC822.HEADER'] 
    mail = Mail.read_from_string msg 
    puts mail.subject 
end 

지금, 나는 그것을 읽고 표시하지 않고 이메일의 본문/텍스트를 읽고 싶어.

답변

2

documentation을 바탕으로 당신은 store 방법을 사용해야합니다. 문서는 언급 :

저장 (세트, ATTR, 플래그)

는 사서함에있는 메시지와 연관된 데이터, 특히 자신의 플래그를 변경하는 STORE 명령을 전송합니다. set 매개 변수는 숫자 또는 숫자 배열 또는 Range 객체입니다. 각 번호는 메시지 시퀀스 번호입니다. attr은 저장할 데이터 항목의 이름입니다. 'FLAGS'는 메시지의 플래그 목록을 제공된 플래그로 바꾸는 것을 의미합니다. '+ FLAGS'는 제공된 플래그를 추가하는 것을 의미합니다. '-FLAGS'는이를 제거하는 것을 의미합니다. flags는 플래그 목록입니다.

리턴 값 : IMAP 순의 배열 :: FetchData. 예를 들어 :

p imap.store(6..8, "+FLAGS", [:Deleted]) 
#=> [#<Net::IMAP::FetchData seqno=6, attr={"FLAGS"=>[:Seen, :Deleted]}>, \\ 
#<Net::IMAP::FetchData seqno=7, attr={"FLAGS"=>[:Seen, :Deleted]}>, \\ 
#<Net::IMAP::FetchData seqno=8, attr={"FLAGS"=>[:Seen, :Deleted]}>] 

그래서 당신은 :Seen 플래그를

imap.store(message_id, "-FLAGS", [:Seen]) 
+0

감사합니다. 이것은 도움이됩니다. 이것과 함께, imap.fetch (message_id, "FLAGS") [0] .attr [ "FLAGS"]는 읽거나 읽지 않은 현재 상태를 알려줍니다. – Alagu

2

이 어쩌면 매우 늦을를 제거해야하지만이에 비틀 거리고 다른 사람을 위해 여기를 떠날 것이다.

imap.examine('INBOX') 

대신 : 지금까지 무엇을 당신이 이메일을 읽고 플래그 섭취, 사용 떠나고 싶어 추론, 경우 Net::IMAP doc

에서

imap.select('INBOX') 

을 명령을 검토 보냅니다 사서함의 메시지에 액세스 할 수 있도록 사서함을 선택합니다. 선택한 사서함이 읽기 전용으로 식별된다는 점을 제외하면 select()와 동일하게 작동합니다.

+0

이것은 가장 좋은 답변입니다. – stuartchaney