Class: Gmail::Message

Inherits:
APIResource show all
Includes:
Base::Delete, Base::Get, Base::List, Base::Modify, Base::Trash
Defined in:
lib/gmail/message.rb

Instance Method Summary collapse

Methods included from Base::Trash

included, #trash, #untrash

Methods included from Base::Modify

#archive, #archive!, #mark_as_read, #mark_as_read!, #mark_as_unread, #mark_as_unread!, #modify, #modify!, #star, #star!, #unarchive, #unarchive!, #unstar, #unstar!

Methods included from Base::Get

included

Methods included from Base::Delete

#delete, included

Methods included from Base::List

included

Methods inherited from APIResource

base_method, class_name

Methods inherited from GmailObject

#[], #[]=, #as_json, #detailed, #initialize, #inspect, #refresh, #to_hash, #to_json, #to_s, #values

Constructor Details

This class inherits a constructor from Gmail::GmailObject

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Gmail::GmailObject

Instance Method Details

#create_draftObject



16
17
18
# File 'lib/gmail/message.rb', line 16

def create_draft
  Draft.create(message: msg_parameters)
end

#deliverObject



26
27
28
29
# File 'lib/gmail/message.rb', line 26

def deliver
  response = Gmail.request(self.class.base_method.to_h['gmail.users.messages.send'],{}, msg_parameters)
  Message.get(response[:id])
end

#deliver!Object



20
21
22
23
24
# File 'lib/gmail/message.rb', line 20

def deliver!
  response = Gmail.request(self.class.base_method.to_h['gmail.users.messages.send'],{}, msg_parameters)
  @values = Message.get(response[:id]).values
  self
end

#forward_with(msg) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/gmail/message.rb', line 44

def forward_with msg
  # save headers that need to be override by users compared to a classic reply
  x_cc = msg.cc
  x_to = msg.to
  x_bcc = msg.bcc
  x_subject = msg.subject || subject #if user doesn't override keep classic behavior
  # set headers as for reply
  msg = set_headers_for_reply msg
  # quote message
  msg = quote_in msg
  # reset saved overridden headers
  msg.cc = x_cc
  msg.to = x_to
  msg.bcc = x_bcc
  msg.subject = x_subject
  msg
end

#inbox?Boolean

Returns:

  • (Boolean)


76
77
78
# File 'lib/gmail/message.rb', line 76

def inbox?
  labelIds.include?("INBOX")
end

#rawObject

is not in private because the method is used in Draft



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'lib/gmail/message.rb', line 82

def raw # is not in private because the method is used in Draft
  if super #check if raw is set to allow fully custom message to be sent
    super
  else
    s = self
    msg = Mail.new
    msg.subject = subject
    if body
      msg.body = body
    end
    msg.from = from
    msg.to   = to
    msg.cc = cc
    msg.header['X-Bcc'] = bcc unless bcc.nil?#because Mail gem doesn't allow bcc headers...
    msg.in_reply_to = in_reply_to  unless in_reply_to.nil?
    msg.references = references unless references.nil?
    if text
      msg.text_part = Mail::Part.new do |p|
        content_type 'text/plain; charset=UTF-8'
        p.body s.text
      end
    end
    if html
      msg.html_part = Mail::Part.new do |p|
        content_type 'text/html; charset=UTF-8'
        p.body s.html
      end
    end
    Base64.urlsafe_encode64 msg.to_s.sub("X-Bcc", "Bcc") #because Mail gem doesn't allow bcc headers...
  end
end

#reply_all_with(msg) ⇒ Object



31
32
33
34
35
# File 'lib/gmail/message.rb', line 31

def reply_all_with msg
  msg = set_headers_for_reply msg
  msg = quote_in msg
  msg
end

#reply_sender_with(msg) ⇒ Object



37
38
39
40
41
42
# File 'lib/gmail/message.rb', line 37

def reply_sender_with msg
  msg = set_headers_for_reply msg
  msg = quote_in msg
  msg.cc = nil
  msg
end

#sent?Boolean

Returns:

  • (Boolean)


72
73
74
# File 'lib/gmail/message.rb', line 72

def sent?
  labelIds.include?("SENT")
end

#threadObject



12
13
14
# File 'lib/gmail/message.rb', line 12

def thread
  Thread.get(threadId)
end

#thread_idObject



63
64
65
# File 'lib/gmail/message.rb', line 63

def thread_id
  threadId
end

#unread?Boolean

Returns:

  • (Boolean)


68
69
70
# File 'lib/gmail/message.rb', line 68

def unread?
  labelIds.include?("UNREAD")
end